首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从iOS6中的后台线程调用主线程上的代码

无法从iOS6中的后台线程调用主线程上的代码
EN

Stack Overflow用户
提问于 2012-10-23 23:19:02
回答 1查看 186关注 0票数 0

在后台线程上保存托管对象上下文时,我正在侦听NSManagedObjectContextDidSaveNotification并尝试在主线程上合并它。

但是,当我尝试将请求转发到主线程时,既没有使用

代码语言:javascript
复制
[self performSelectorOnMainThread:@selector(executeThisCode:) withObject:saveNotification waitUntilDone:NO]; 

也不是

代码语言:javascript
复制
dispatch_async(dispatch_get_main_queue(), ^{
    ...execute this code
});

奇怪的是,这一切都适用于iOS 5.1和iOS 5.0,但不适用于iOS 6。你有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2012-10-23 23:47:40

你会先检查你是否已经在主线程中了吗?如果在调用performSelectorOnMainThread时,executeThisCode是当前正在执行的方法的选择器,那么这将是特别相关的。如下所示:

代码语言:javascript
复制
- (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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13033785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档