UIが動作している間に、ループ内にあるiOSプログラムを使用できるかどうかは疑問だ。例えば無限ループUI
:
while (1) {
//do some calc here
Application.ProcessMessages();
}
ここでプログラムがループにとどまり、及び(Application.ProcessMesagesを使用しています)ため、画面を更新し、UIのクリックを見るには、スクロールなど
は何ですこれはIOSで可能なのでしょうか、多分何らかの形のRunLoopを使っていますか?
このようなrunLoopを使用してみましたが、いつか動作します。その後、DoSomeWork(...)がインターネットから何かをダウンロードしている場合にUIがフリーズします。
while(1) {
DoSomeWork(....);
CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, YES);
}
私は、他のやり方があることは知っていますが、このようなことがIOSでうまくいくかどうか疑問に思っていましたか?
または、フリーズの原因を知っていますか?
おかげ
UIは、あなたがそれをブロックするメインスレッドで仕事をして無限ループをahve場合、あなたはあなたが必要とするとき、仕事をするために、異なるスレッドを生成する必要があり、メインスレッド上で実行されます
解決策を見つける前に、まずこれが実際に必要かどうかを尋ねる必要があります。永続的なポーリングは、現代のプログラミングではめったに必要ありません。 –