新しいスレッドでメソッドを呼び出してsetNeedsDisplay
いますが、ビューに変更が見られません。setNeedsDisplay
新しいスレッドを呼び出した後、すべての変更を確認するにはどうすればよいですか?
1446 次
2 に答える
1
UI に関するすべての更新は、メイン スレッドで行う必要があります。通常、バックグラウンド スレッドは、ファイルのダウンロードやデータの解析など、時間のかかるタスクに使用されます。
メイン スレッドは、ユーザー インターフェイスを更新し、ユーザーのイベントとアクションに応答する役割を果たします。これが、バックグラウンド スレッドを使用する主な理由です。メモリ使用量を管理し、ユーザーに応答できるようにメイン スレッドを可能な限り解放してパフォーマンスを向上させます。通常はメイン スレッドをブロックする時間のかかるタスクは、バックグラウンド。
バックグラウンド スレッドで必要なすべてのデータと情報を処理したら、データをメイン スレッドにディスパッチして、データに従って UI への変更をコミットする必要があります。
dispatch_async(dispatch_get_main_queue(), ^{
//do UI stuff
});
メインスレッドにディスパッチする別の方法は次のとおりです。
[self performSelectorOnMainThread:@selector(doUIStuff:) withObject:stuff waitUntilDone:NO];
于 2014-05-10T17:20:26.867 に答える