[英]dispatch_get_main_queue() in main thread
我有一些方法可以在某些情況下改變UI。
例如:
-(void) myMethod {
if(someExpressionIsTrue) {
// make some UI changes
// ...
// show actionSheet for example
}
}
有時myMethod
有時是從mainThread
調用來自other thread
一些other thread
。
這就是為什么我希望在mainThread
確實執行這些UI更改。
我用這種方式改變了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更新的方法或塊。 在主隊列中從主隊列中添加異步塊沒有問題,它所做的就是稍后在運行循環中運行該方法。
你絕對不想做的是調用dispatch_sync
從主隊列中向主隊列添加一個塊,因為你最終會鎖定自己。
如果您在主線程中調用dispatch_async,請不要擔心。 iOS會將塊放入隊列並在主線程中執行塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.