如何确保我的函数仅在主线程上运行?它更新UI元素。
这样的功能是否被认为是“不好的”?
-(void)updateSomethingOnMainThread {
if ( ![[NSThread currentThread] isEqual:[NSThread mainThread]] )
[self performSelectorOnMainThread:_cmd withObject:nil waitUntilDone:NO];
else {
// Do stuff on main thread
}
}
我这样写是为了避免有第二个功能,最初我是这样的:
-(void)updateSomethingOnMainThread_real {
// Do stuff on main thread
}
-(void)updateSomethingOnMainThread {
[self performSelectorOnMainThread:@selector(updateSomethingOnMainThread_real) withObject:nil waitUntilDone:NO];
}
最佳答案
这可以。您也可以使用GCD在主线程上执行代码。
checkout 此SO帖子。
GCD to perform task in main thread
关于iphone - 确保函数仅在主线程上运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7852737/