Cam*_*ies 45 iphone multithreading objective-c ios
我的代码需要保证在主线程上运行某个操作,但调用可能来自后台线程.
为了检测后台的情况,我使用了以下内容:
- (void)selectorToRunInMainThread:(id)arguments
{
// push to main thread
if ([NSRunLoop currentRunLoop] != [NSRunLoop mainRunLoop])
{
[self performSelectorOnMainThread:@selector(selectorToRunInMainThread:) withObject:arguments waitUntilDone:NO];
return;
}
/*
... function content ...
*/
}
Run Code Online (Sandbox Code Playgroud)
这适用于iOS 4和iOS 3.2,但不适用于iOS 3.1.3及更早版本.在这些早期版本中,该函数将继续在无限循环中调用.
将比较更改为:
if (![[NSRunLoop currentRunLoop] isEqualTo:[NSRunLoop mainRunLoop]])
没有效果,他们仍然永远不会比较相同的价值.
我找到了一个似乎有效的解决方案,但我想先看看其他人的建议.
| 归档时间: |
|
| 查看次数: |
20046 次 |
| 最近记录: |