私のiPhoneアプリケーションには、バックグラウンドでタスクを実行するために作成したセカンダリスレッドがあり、数ミリ秒ごとに、ビューを更新する必要があります(メインスレッドからではありません)。UIViewサブクラスで次のコードを試しました。
[self performSelectorOnMainThread:@selector(setNeedsDisplay) withObject:nil waitUntilDone:NO];
これはシミュレーターではうまく機能しますが、私のデバイスでは非常に遅くなります。私が考えることができる唯一のことは、メインスレッドがUIKitの通常のルーチンで行き詰まっていることです。つまり、setNeedsDisplayは、想定されている時間よりもかなり遅れて呼び出されます(約1/2秒後)。これは、他のコードでは、ユーザーの操作に基づいて、すぐにsetNeedsDisplayを呼び出し、ラグなしで正常に動作するためだと思います。セカンダリスレッドでは、ユーザーインターフェイススレッドよりもバックエンドの計算が少なくなります。これは私のアプリケーションでいくつかの非常に悪い視覚効果につながります。
要約すると、この問題を解決するにはどうすればよいですか?
アップデート:
1秒間にx回更新する必要があるビューを通知する別の方法はありますか?それが可能であれば、それは私にとってより良いパフォーマンスになる可能性があります。CADisplayLinkを試しましたが成功しませんでした...