Swift でスレッドを使用するにはどうすればいいですか?
dispatchOnMainThread:^{
NSLog(@"Block Executed On %s", dispatch_queue_get_label(dispatch_get_current_queue()));
}];
ベストアンサー1
Swift 3.0以降
多くのことが近代化されたSwift 3.0 では、バックグラウンド キューで何かを実行すると次のようになります。
DispatchQueue.global(qos: .userInitiated).async {
print("This is run on a background queue")
DispatchQueue.main.async {
print("This is run on the main queue, after the previous code in outer block")
}
}
Swift 1.2 から 2.3
let qualityOfServiceClass = QOS_CLASS_USER_INITIATED
let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
dispatch_async(backgroundQueue, {
print("This is run on a background queue")
dispatch_async(dispatch_get_main_queue(), { () -> Void in
print("This is run on the main queue, after the previous code in outer block")
})
})
Swift 1.2以前 – 既知の問題
Swift 1.1 の時点では、Apple はいくつかの変更を加えずに上記の構文をサポートしていませんでした。 を渡すことはQOS_CLASS_USER_INITIATED
実際には機能しませんでした。代わりに を使用してくださいInt(QOS_CLASS_USER_INITIATED.value)
。
詳細については、アップルのドキュメント