在后台线程上保存托管对象上下文时,我正在侦听NSManagedObjectContextDidSaveNotification并尝试将其合并到主线程上。
但是当我尝试将请求转发到主线程时,没有任何代码都是使用
执行的[self performSelectorOnMainThread:@selector(executeThisCode:) withObject:saveNotification waitUntilDone:NO];
也不是
dispatch_async(dispatch_get_main_queue(), ^{
...execute this code
});
奇怪的是,这一切都适用于iOS 5.1和iOS 5.0,但不适用于iOS 6.任何想法?
答案 0 :(得分:1)
您首先检查您是否已经在主线程中?如果executeThisCode
是您在调用performSelectorOnMainThread
时正在执行的方法的选择器,那么这将特别相关。像这样:
- (void) executeThisCode: (NSNotification*) notification{
if (![NSThread isMainThread]) {
[self performSelectorOnMainThread:@selector(executeThisCode:)
withObject:notification
waitUntilDone:YES];
return;
}
// merge logic goes here and executes on the main thread
}