私の iOS アプリでは、次のようなバックグラウンド スレッドで計算負荷の高いタスクを実行しています。
// f is called on the main thread
- (void) f {
[self performSelectorInBackground:@selector(doCalcs) withObject:nil];
}
- (void) doCalcs {
int r = expensiveFunction();
[self performSelectorOnMainThread:@selector(displayResults:) withObject:@(r) waitUntilDone:NO];
}
メインスレッドをブロックしないように、GCD を使用して高価な計算を実行するにはどうすればよいですか?
GCD キューの選択に関するいくつかのオプションを見てきましたがdispatch_async
、GCD に慣れていないため、十分に理解しているとは思えません。