7月 2, 2010
iOS4からマルチタスクが導入されたことにより、アプリ終了時に呼ばれるデリゲートメソッドが変更されました。
保存処理などをそこで行っていたアプリは変更する必要があります。
これまではアプリ起動中にホームボタンをクリックすれば原則的にはアプリは終了していましたが、マルチタスクの導入によりホームボタンをクリックしただけではアプリは閉じるだけで終了はせず、一部機能を除き休止状態となります。
実際にアプリを終了させるためには、ホームボタンをダブルクリックしてタスク一覧からアプリを長押し削除します。
このようにマルチタスクの導入によりアプリの終了に関する操作が以前とは異なっているように、内部の処理も変更しています。
iPhone SDK 3 ではアプリ終了時(ホームボタンクリック)にUIApplicationDelegateの
// - (void)applicationWillTerminate:(UIApplication*)application; //
が呼ばれていたのですが、iPhone SDK 4ではアプリを閉じた(ホームボタンクリック)だけでは呼ばれず、タスク一覧から長押し削除した場合にも呼ばれません。
そこで、アプリを閉じた場合(ホームボタンクリック)に保存処理をするように変更します。
閉じたときに呼ばれるUIApplicationDelegateのメソッドが以下です。
// - (void)applicationWillResignActive:(UIApplication*)application; // - (void)applicationDidEnterBackground:(UIApplication *)application; //
これらのメソッドに処理を移す必要があります。
また、CoreDataを使う新規プロジェクトを作成した場合も保存処理のコードがapplicationWillTerminateに自動で記述されているのでそちらも場合によっては変更する必要があるかもしれません。
※ 特にiPhone SDK 4でビルドする必要がない場合、iPhone SDK 3でビルドすれば以前同様の挙動となり、iPhone4 のiOS4でも動作します。
※(訂正) Appleにより最新のSDKでビルドすることが推奨されています。

http://labs.techfirm.co.jp/ipad/yuichilo/924
This comment was originally posted on Twitter
アプリ終了時の処理 〜 iOS4 & iPhone SDK 4 対応 〜 – http://tinyurl.com/27t54bz http://tinyurl.com/27t54bz
This comment was originally posted on Twitter
アプリ終了時の処理 〜 iOS4 & iPhone SDK 4 対応 〜 | iPad Techfirm Lab http://ow.ly/269i3
This comment was originally posted on Twitter
アプリ終了時の処理 〜 iOS4 & iPhone SDK 4 対応 〜 | iPad Techfirm Lab http://labs.techfirm.co.jp/ipad/yuichilo/924
This comment was originally posted on Twitter
メモ http://goo.gl/5JB4
This comment was originally posted on Twitter
[...] アプリ終了時の処理 〜 iOS4 & iPhone SDK 4 対応 〜 | iPad Techfirm Lab 2011年3月22日 iPhone/iPad開発, JavaScript Titanium [...]