我尝试为核心数据进行一些多线程同步。但万一,我必须在主线程中保存:
- (void)importerDidSave:(NSNotification *)saveNotification {
NSLog(@"MERGE in destination controller");
if ([NSThread isMainThread]) {
AppDelegate *delegate = (AppDelegate *)[[NSApplication sharedApplication] delegate];
[[delegate managedObjectContext] mergeChangesFromContextDidSaveNotification:saveNotification];
} else {
[self performSelectorOnMainThread:@selector(importerDidSave:) withObject:saveNotification waitUntilDone:NO];
}
}
我有时会冻结主线程(在这种情况下我有旋转)。所有接口视图都连接到阵列控制器,后者连接到AppDelegate moc。 所以,关于设计的一些问题:
任何帮助都会表示赞赏......
答案 0 :(得分:0)
您将始终需要更新控制器绑定的上下文,因为这是UI内容,您需要在主线程上执行此操作。
我对你为什么按照你的方式进行编码感到有些困惑。这对我来说似乎更简单:
- (void)importerDidSave:(NSNotification *)saveNotification {
NSLog(@"MERGE in destination controller");
AppDelegate *delegate = (AppDelegate *)[[NSApplication sharedApplication] delegate];
[[delegate managedObjectContext] performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:) withObject:saveNotification waitUntilDone:NO];
}
使用该代码是否可以提高性能?