0

アプリケーションでNSRunLoopを使用しています。たった1つのステートメント

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]]; 

forループで実行されます。特定のテキストを2秒ごとに3回更新する必要があります。すべて正常に動作しますが、実行中の画面を終了すると(そして、実行中に最も重要なことです)、もう一度画面に入ってからもう一度終了すると、アプリがクラッシュします。NSRunLoopの実行中に終了した場合は、実行を停止する必要があると思いますが、その方法がわかりません。何かアドバイスをいただけますか?

これは私のループです:

for (int i = 1;i <= 3;i++)
{
    int result = [self analyzeCards];

   ((UILabel *)[bidLabels objectAtIndex:i]).text = [bidResults objectAtIndex:result];


    [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]]; 

    bidIndexes [i - 1] = result;
}
4

1 に答える 1

1

質問を変更して、ソースコードを少し含めていただきありがとうございます。

runUntilDateこれまで行ってきたことを実行せず、代わりにデタッチスレッドとして実行することをお勧めします(メインスレッドでラベル(ユーザーインターフェイス)を実際に更新するようにしてください)。

クラッシュ自体は、bidLabelsアレイ内のオブジェクトが古くなっているか解放されているか、単にゴミであることが原因で発生している可能性があります。ウィンドウを再度開くたびに、そのアレイをリセットします。

于 2011-11-26T12:18:34.627 に答える