IPhoneで計算するのに15秒かかる文字列を返す関数があります。
メインスレッドをユーザーインターフェイスに使用できるように、バックグラウンドスレッドで関数を実行できるようにします。
GCD
はこれに適した新しいテクノロジーだと聞いたことがありますが、これがどのように機能するかについてサンプルコードを提供できますか?
つまり、バックグラウンドスレッドで汎用関数を実行し、結果をUIテキストフィールドに返します。
編集:
Alladinianに感謝します。
ただし、GCDを使用すると、関数はiphoneシミュレーターで実行するのに1秒長くかかります(iphoneで約5秒になると思います(確認のために今日は後でテストする必要があります))
これには理由がありますか?おそらく、バックグラウンドスレッドが遅いか何かですか?
GCDを使用すると、実際には非常に簡単です。典型的なワークフローは次のようなものです。
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
dispatch_async(queue, ^{
// Perform async operation
// Call your method/function here
// Example:
NSString *result = [anObject calculateSomething];
dispatch_async(dispatch_get_main_queue(), ^{
// Update UI
// Example:
self.myLabel.text = result;
});
});
GCDの詳細については、 Appleのドキュメントはこちら をご覧ください。
また、GCDを使用する必要がない場合もありますが、これは非常に簡単に使用できます。
[self performSelectorInBackground:@selector(someMethod:) withObject:nil];