記事一覧

NSUserDefault @ iOS4

次回起動時にアプリの状態が再現するよう各種変数を保存するための方法としては、アプリ終了時に NSUserDefaults に書き込みを行うのが一番一般的かつ楽な方法でしょう。
iPhoneOS3.x系では、そのNSUserDefaults関係の操作を applicationWillTerminate に記述することで実現できるわけで、実際これで動いておりました。
が、iOS4ではどうやら applicationWillTerminate 自体が呼ばれておらず、かわりに applicationWillResignActive だけが呼ばれている様子。
なので結局、iOS 3&4 両方で状態保存を実現するためには、applicationWillTerminate と applicationWillResignActive の両方に NSUserDefaults 関係のコードを書かないといけない。
なんか腑に落ちないよなぁ・・・。

(10/6追記)
もっと確実にやるためには applicationDidEnterBackground にも同じことを書かないといけないみたいです。

The easiest way to save the application's state so that it can restore them on the next launch is writing NSUserDefaults when the application is terminating.
With iPhoneOS3.x it can be done by writing NSUserDefaults related codes on applicationWillTerminate and everything worked well.
But it seems iOS4 no longer calls applicationWillTerminate but only calls applicationWillResignActive instead.
Consequently, to let your app have the save state function both on iOS 3&4 you have to write NSUserDefaults related codes both in applicationWillTerminate and in applicationWillResignActive.

(Added on 10/6)
You also have to write the same thing in applicationDidEnterBackground to make it perfect.