4

私はapplicationWillTerminate:を使用して最後のものを保存しています。しかし、問題はそれが決して呼び出されないということです。メソッドの最上部で次のようなことをすれば、NSLog(@"Something");は呼び出されず、コンソールに出力されません。applicationWillTerminate:呼び出されていない

これはなぜ起こっているのですか?アップルのドキュメントから

答えて

10

:ユーザーがアプリケーションを終了するときにバックグラウンド実行をサポートしていないまたはiOS 3.xまたはそれ以前のに対してリンクされているアプリケーションについては

は、このメソッドは常に呼ばれています。 バックグラウンド実行をサポートするアプリケーションの場合、アプリケーションは単にその場合バックグラウンドに移動するため、ユーザーがアプリケーションを終了するときには通常と呼ばれません。ただし、このメソッドは、アプリケーションがバックグラウンドで実行されていて(中断されていない)、システムが何らかの理由で終了する必要がある状況で呼び出されることがあります。

のアプリがバックグラウンド有効にした場合、使用:

- (void)applicationDidEnterBackground:(UIApplication *)application

+0

なぜdidEndCustomizingItems方法がありますどちらも呼び出されていないので、NSLogを入力すると何も出力されません。 – TheHAWK

+2

重要な注意点:iOS 6では、アプリケーションがまだフォアグラウンドになっているときにユーザーがデバイスの電源をオフにした場合、アプリをバックグラウンドにしていない状態で「applicationWillTerminate: – smorgan

4

使用applicationDidEnterBackground:代わりに。マルチタスキングシステムでホームボタンを押すと、アプリケーションは終了しません。コアアプリケーションの設計とアプリケーションのライフタイムのiOS Application Programming Guideから

+1

Not applicationWillEnterBackground:そのメソッドは存在しません。applicationDidEnterBackgroundを使用してください。 – zaph

+0

@CocoaFu:ありがとうございました。 – jrturton

1

applicationWillTerminate:アプリケーションが現在中断された場合にメソッドが呼び出されていません。

iOS 4.0とリンクする場合は、applicationDidEnterBackground:にもデータを保存する必要があります。

1

ステップ1:コマンド+シフト+ H(ダブルクリック(タブ))

ステップ2:移動アプリトップ側(キル)

ステップ3:applicationWillTerminate作業

+0

が機能しませんでした。 –

関連する問題