AppDelegate はスレッドセーフなのだろうか? 現在、セカンダリ スレッドでネットワーク タスクを実行する操作を行っています。タスクの開始時に に設定し、タスクの完了時に に設定NetworkActivityIndicatorVisible
したいと考えています。常にメインスレッドで呼び出す必要がありますか、それとも現在の実行ループスレッドで実行できますか?YES
NO
ありがとう
AppDelegate はスレッドセーフなのだろうか? 現在、セカンダリ スレッドでネットワーク タスクを実行する操作を行っています。タスクの開始時に に設定し、タスクの完了時に に設定NetworkActivityIndicatorVisible
したいと考えています。常にメインスレッドで呼び出す必要がありますか、それとも現在の実行ループスレッドで実行できますか?YES
NO
ありがとう
一般に、UIKit はスレッドセーフではありません。いくつかのことで「逃げる」ことができるかもしれませんが、常にメインスレッドで UIKit を実行する必要があります。十分に文書化された例外がいくつかあります。
バックグラウンド スレッドからこれを行うパターンは単純です。
dispatch_async(dispatch_get_main_queue(), ^{
// Put any code you want to execute in the main thread here.
});
dispatch_async に渡すブロック内のコードは、メインの実行ループで実行されるようにスケジュールされます。