Apple の「アプリの状態とマルチタスキング」のドキュメント(セクション「バックグラウンドに移動するときに行うこと」) には、アプリがバックグラウンドに移行したときの保存について次のように記載されています。
ユーザー データとアプリの状態情報を保存します。バックグラウンドに入るときに、保存されていないすべての変更をディスクに書き込む必要があります。この手順が必要なのは、さまざまな理由でバックグラウンドにある間にアプリが静かに強制終了される可能性があるためです。この操作は、必要に応じてバックグラウンド スレッドから実行できます。
たとえば、次のように時間がかかる保存などのディスパッチ操作を開始するとapplicationDidEnterBackground:
、ホームボタンを押したときに NSLog 出力が得られません。アプリに戻ると、NSLog 出力が表示されます。
- (void)applicationDidEnterBackground:(UIApplication *)application {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self performOperation];
NSLog(@"Operation finished");
});
}
performOperation
メソッドが完全に実行されたか、アプリがスリープ モードに入ったときに中断されたかを確認できますか?