SDK2.2で作られたXcodeのプロジェクトを自分のXcode(SDK4.2)で開いた。 1) アプリ起動時に呼ばれるdidFinishLaunching(didFinishLaunchingWithOptions)でデータベースに接続。 2) 処理をいろいろして。 3) アプリ終了時に呼ばれるapplicationWillTerminateでデータベースに保存して、接続を切ってアプリ終了。 という流れのアプリ。 そんでもって自分の環境でリコンパイルしたところ、applicationWillTerminateが呼ばれない。 調べると、iOS4からマルチタスクになったからapplicationWillTerminateじゃなくて、applicationDidEnterBackgroundが呼ばれ、呼び戻す時には、applicationWillEnterForegroundが呼ばれる。 とのこと。 では、現行のSDK2.2でコンパイルされて、リリースされて、iOS4.2で動いてるこのアプリはapplicationWillTerminate呼ばれてるの?呼ばれてなかったら3) の保存処理されてないということですか? ということで調べてみたところ、以下の条件下ではapplicationWillTerminateが呼ばれるとのことでした。 ■ アプリケーションがiPhone SDK 3.x以前にリンクしている。 ■ アプリケーションがiPhone OS 3.x以前のデバイス上にデプロイメントされている。 ■ 現在のデバイスがマルチタスクをサポートしていない(「マルチタスクがサポートされている かどうかの確認」 (65 ページ)参照)。 ■ アプリケーションのInfo.plistファイルにUIApplicationExitsOnSuspendキーが含まれてい る(「バックグラウンド実行を行わないことを選択」 (40 ページ)参照)。 ちょっとびびった。 ちなみにSDK2.2の入れ方がわからないので、デバッグできまへんでした。 iPhoneアプリケーションプログラミング ガイト: http://developer.apple.com/jp/devcenter/ios/library/japanese.html