異なるスレッドでサーバーにサーバー リクエストを送信しています。ロードが完了すると、tableView を更新するデリゲート コールバックを取得します。最初に、いくつかの奇妙な動作に気付きました。それは、一部の UI 要素がメイン スレッドで実行されていないことが原因である可能性があると考えました。
以下のコードを追加して問題を解決しましたが、iOS 4 デバイスでコードがクラッシュしました (DISPATCH_QUEUE_PRIORITY_BACKGROUND は iOS 4 と互換性がないことが判明しました)。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0), ^(void) {
dispatch_async(dispatch_get_main_queue(), ^(void) {
//Update view code etc...
});
});
最初の を削除してdispatch_async
call のみを呼び出すdispatch_get_main_queue
と、コードは正常に実行されます。
dispatch_async(dispatch_get_main_queue(), ^(void) {
//Update view code etc...
});
アップデートを Apple に送信する前に、これを行ってもよいかどうか尋ねたかったのです。コードは iOS 4 デバイスで正しく実行されますか?
前もって感謝します。