iOS7で奇妙な動作が見つかりました。私は重い負荷を処理するdispatch_async
バックグラウンドスレッドがあり、このスレッドから私はUIを更新したい。 iOSの8日と示唆したが、iOS7テストデバイス上で実行されているとして上記のコードが動作する上でdispatch_async(dispatch_get_main_queue()、^ {});背景からスレッドが遅いiOS7で
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
[self heavyFunction];
dispatch_async(dispatch_get_main_queue(), ^{
[self updateUI];
});
});
は(iPhone 4S)dispatch_async(dispatch_get_main_queue(), ^{});
への呼び出しは毎回4秒をとります。だから私は、次のと同じようにしました。私はすでに更新とheavy_functionを外して、同じ動作が残っています。それから私はそれが現れない最小限の例を構築しました。だから私はおそらく他の何かが私のmain_queueをiOS7でブロックしていると思ったが、私はこれが何であるべきかを理解できない。 [self heavyfunction];
が終了するまで、このViewControllerで起こっている他のUI関連のものはありません。
すべては、Base SDK 9.3とDeployment Target 7.0でXCode 7.3.1でコンパイルされます。
誰もがこの動作を既に持っていて、ここでブロックしている可能性のある方向に私を指摘できますか?
時間プロファイラ計測器を使用しましたか? – Paulw11
はい、私は持っていますが、ちょうど2秒の間、ループ内で '[UIView(Hierachy)layoutBelowIfNeeded]'を2回取得します。 –
矛盾する制約についての警告はありますか? – Paulw11