に特定のスレッドからのコードを実行:は、私はこのような機能を持っていスウィフト
func foobar() {
let targetThread = Thread.current
DispatchQueue.main.async {
UIView.animate(withDuration: 0.5, animations: {
// Code I need to run on the main thread
}, completion: {
// Code I want to run on targetThread -- HOW?
}
}
}
どのように私はtargetThread
からコードを実行するのですか?ありがとう。
現在実行中のスレッドを使用する代わりに、新しいスレッドを作成する方がよいでしょう。メソッドの外部にアクセスし、このメソッドを呼び出すときにメソッドを起動します。 class var current:Thread 現在の実行スレッドを表すスレッドオブジェクトを返します。 – Deepak
特定のスレッドでコードを実行する必要があるのはなぜですか?あなたはする必要はありません、そして、これは落胆します。あなたはおそらく 'DispatchQueue.global()。async'を補完ブロックに入れてそこでコードを実行したいのですが、コードを目的のスレッドで実行させたい理由を教えてください。 – Alistra
デリゲートが呼び出された同じスレッドでデリゲートを呼び出すことは非常に一般的です。残念ながら、gcdはそれを実際にサポートしていません。 NSObjectのperformSelector:onThreadは使用できますが、きれいなAPIではありません。私は、プログラムがperformSelector:onThreadを使用する独自のperformBlock:onThreadメソッドを持っているのを見ました。 – EricS