SWIFT

0

にUIの更新のためにスレッドを使用する場合は、私がメインキューにUIを更新するコードを入れするときについて混乱しています:そのようhttps://www.raywenderlich.com/79149/grand-central-dispatch-tutorial-swift-part-1としてSWIFT

dispatch_async(dispatch_get_main_queue()) 
{ 
    // Do UI update here 
} 

オンライン情報源は、そのアプローチを使用することをお勧めします。しかし、多くのswift/iOSチュートリアルでは、特にUIの更新が小さい場合(button.hidden = falsebutton.backgroundColor = UIColor.blueColor()など)、コーディングパターンは適用されません。

答えて

0

すべてのUI要素は、メインスレッドアプリケーションで更新する必要があります。適切な遷移を見て、スムーズにuiを更新したい場合は、黄金のルールです。

dispatch_async(dispatch_get_main_queue()) 
{ 
    // Do UI update here 
} 

アプリケーションのメインスレッドであるため:あなたは、メインスレッド上で作業している場合

使用する必要はありません。

別のスレッドまたは別の操作で作業していて、これらのスレッドでUIを更新する必要がある場合に、表示するコードブロックを使用する必要があります。

バックグラウンドスレッドで何らかの計算を行い、このスレッドのUIを更新する必要があるとします。

コードソリューションの例:

//Async operation in with we would like to do some calculation and do not block main thread of the application. 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 
     let result = doSomeCalculation() 
     //After we receive result of the calculation we need to update UI element `UIlable` so we call main thread for that. 
     dispatch_async(dispatch_get_main_queue()) { 
       label.stringValue = result 
     } 
} 
+0

ああ理にかなって、どうもありがとうございました! – AndreasLukas