【发布时间】:2013-03-29 05:03:40
【问题描述】:
我有一个在 application:didFinishLaunchingWithOptions 中创建持久存储的应用程序。添加商店显然需要很长时间,这会导致 iOS 在应用程序完成启动之前终止应用程序。 如何将商店添加到主线程之外的协调器?有什么例子吗? stackoverflow link
操作系统版本:iOS 6.1.3 (10B329) 报告版本:104
异常类型:00000020 异常代码:0x000000008badf00d 突出显示的线程:0
应用特定信息: com.maksanzhi.person 未能及时启动
经过的总 CPU 时间(秒):13.470(用户 13.470,系统 0.000),22% CPU 已用应用程序 CPU 时间(秒):0.343,1% CPU
线程 0 名称:调度队列:com.apple.main-thread 线程 0:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"COOLPERSONS.sqldata"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:[storeURL path]]) {
NSURL *defaultStoreURL = [[NSBundle mainBundle] URLForResource:@"COOLPERSONS" withExtension:@"sqldata"];
if (defaultStoreURL) {
[fileManager copyItemAtURL:defaultStoreURL toURL:storeURL error:NULL];
[self addSkipBackupAttributeToItemAtURL:storeURL];
}
}
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return _persistentStoreCoordinator;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
UINavigationController *nav = (UINavigationController *)self.window.rootViewController;
MainViewController *cvtc = (MainViewController *)[[nav viewControllers]objectAtIndex:0];
cvtc.managedObjectContext = self.managedObjectContext;
[self setAppereance];
return YES;
}
【问题讨论】:
-
仅仅创建一个商店通常不会花费太多时间。你能向我们展示你所有的启动代码吗?也许探查器将有助于您确定您的启动时间在哪里被占用。
-
我用更多信息编辑了这个问题。
标签: ios sqlite core-data appdelegate