アプリが起動時たときに例えばCoreDataのマイグレーションをしたり、データの整合性がとれているかをチェックしたり、更にはファイルをDocumentフォルダにインストールしたりすることがあります。
しかし、これらの処理には時間制限があり、アプリ起動時に20秒以上かかってしまうと強制終了となってしまいます。

つまり、これらの処理をするにはアプリ起動後にやる必要があります。

■アプリ起動後に重い処理をする方法(例)
AppDelegateの中で関数を定義し、
[objc]
-(void)update{
//重い処理
}
[/objc]
application:didFinishLaunchingWithOptions:の所であとで実行すると予約をする
[objc]
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
… // いろいろな処理
[self performSelector:@selector(update) withObject:nil afterDelay:0.1];
}
[/objc]
このようにやると、起動が成功したあとに思い処理をすることができます。
application:didFinishLaunchingWithOptions:の所で直接重い処理をしてしまうと
起動が完了していないため、そのまま20秒制限にかかるので気をつけてください。

思い処理をしている間はユーザーに明示的に表したほうがいいので、モーダルビューを出したりしたほうがより良いようです。

参考:Cocoaの日々: CoreData – マイグレーションを考慮した CoreDataManager パターン

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>