0

在后台线程上保存托管对象上下文时,我正在监听 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。有什么想法吗?

4

1 回答 1

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
}
于 2012-10-23T15:47:39.700 回答