我有在某些情况下更改 UI 的方法。
例如:
-(void) myMethod {
if(someExpressionIsTrue) {
// make some UI changes
// ...
// show actionSheet for example
}
}
有时myMethod
被称为从mainThread
有时从一些other thread
。
这就是为什么我希望这些 UI 更改在mainThread
.
myMethod
我以这种方式更改了所需的部分:
if(someExpressionIsTrue) {
dispatch_async(dispatch_get_main_queue(), ^{
// make some UI changes
// ...
// show actionSheet for example
});
}
所以问题:
- 调用
dispatch_async(dispatch_get_main_queue()
主线程是否安全且良好的解决方案?对性能有影响吗? - 这个问题可以用其他更好的方式解决吗?我知道我可以使用
[NSThread isMainThread]
方法检查它是否是主线程,并且dispatch_async
仅在其他线程的情况下调用,但这将使我创建更多方法或阻止这些 UI 更新。