UIApplicationDelegate
changed a lot with the introduction of multitasking in iOS4 (see Dr. Touch’s post and charts [although there are still some small omissions and inaccuracies there]).
But UIApplicationDelegate
was not the only class affected. UIViewController
‘s behaviour is slightly changed in the presence of multitasking: namely the view(Will|Did)Disappear:
methods.
If your iOS4-built app is running on iPhone OS 3, or if UIApplicationExitsOnSuspend
is set to true
, then when the user presses the Home button, the frontmost view controller’s viewWillDisappear:
and viewDidDisappear:
methods will be called before the app exits. However, if UIApplicationExitsOnSuspend
is false
and you’re running on a multitasking-enabled device (iPhone 3GS or higher; iPod touch 3rd generation), viewWillDisappear:
and viewDidDisappear:
are not called as it enters the background.
That was a messy couple of sentences so here’s a chart!
UIApplicationExitsOnSuspend? | multitasking-capable device and OS? | When Home button is pressed: |
---|---|---|
false | true |
viewWill/DidDisappear: NOT called |
false | false |
viewWill/DidDisappear: IS called |
true | true |
viewWill/DidDisappear: IS called |
true | false |
viewWill/DidDisappear: IS called |
It’s subtle, but it might make a difference to your code.