2016-09-17 6 views
1

は、SWIFT 3.0に次の行を変換するために私を助けてください:キューとスウィフト3問題

dispatch_async(DispatchQueue.global(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) 

そして、それは正確に何を意味するのでしょうか?何かが好きです:メインキューの角括弧内のコードを実行しますか?

ありがとうございます。

ps。このコード行は、スウィフト3では

答えて

7

は、あなたはそれがすべてのブラケットの間に書かれたコードはバックグラウンドで実行されます何を意味し、この

DispatchQueue.global(qos: .background).async { 

} 

のように書くことができますコアデータで動作するようにapple's codeから取られました。このバックグラウンドスレッドに変更を加えたい場合は、メインスレッドに切り替える必要があります。以下のブロックを記述してください。

dispatch_async(dispatch_get_main_queue()) { 
    // Your code for UI Changes. 
} 

EDIT:グランドセントラル派遣(GDC)のパターンの中で最も一般的なタスクのスウィフト3

DispatchQueue.main.async { 
} 
+0

'DispatchQueue.main.async {}'または 'DispatchQueue.main.sync {}'。メインキューの場合。 – Zico

+0

'dispatch_async(DispatchQueue.global(DISPATCH_QUEUE_PRIORITY_BACKGROUND、0))' '0 'はどうですか?どのように私は0を設定することができます –

2

一つのグローバルなバックグラウンドキュー上で作業を行い、できるだけ早くメインキュー上のUIを更新しています新しいAPIは次のようになります。

DispatchQueue.global(attributes: [.qosDefault]).async { 
    // Background thread 
    DispatchQueue.main.async(execute: { 
     // UI Updates 
    }) 
} 

キューはinitで属性を使用するようになりました。これはSwiftオプションセットであり、シリアルvs並行メモリ、アクティビティ管理オプション、サービス品質(.default、.userInteractive、.userInitiated、.utility、.background)などのキューオプションを含めることができます。

新しい変更:

  • DISPATCH_QUEUE_PRIORITY_HIGH: - > .userInitiated
  • DISPATCH_QUEUE_PRIORITY_DEFAULT: - > .DEFAULT
  • DISPATCH_QUEUE_PRIORITY_LOW: - > .utility
  • DISPATCH_QUEUE_PRIORITY_BACKGROUND: - >選択図】図

あなたが詳細を知りたい場合、これは良い話ですhttps://developer.apple.com/videos/play/wwdc2016/720/

+0

助けてくれてありがとう! –

関連する問題