2009-03-27 1 views
1

私はある条件が満たされるまで繰り返す必要がある方法があります。 (条件が満たされていない)場合は{obj-c/iPhone SDKではどうすればmthodを呼び出すことができますか?

実行この方法は再び

}

他 {

}

しかし、私は知りませんが。私のようなステートメントを使用しています「このメソッドをもう一度実行する」方法。このメソッドはrunActionと呼ばれていますので、私は[self runAction]を試みましたが、ランタイムエラーが発生しました。

助けてください。

おかげ

+0

ランタイムエラーとは何ですか? –

答えて

3

自体は合法である内からメソッドを呼び出すと、しかし、あなたが

2

rpetrichはあなたに正しい答えを与えている無限がたに呼び出す場合は、スタックオーバーフローで終わるかもしれないが、あなたを持っています代わりにループを使用すると考えられていますか?

また
while (condition is not met) 
{ 
    // logic that affects condition. 
} 

「条件」は外力(ユーザー入力、ダウンロード、など)に依存している場合、これらのどちらが正しいとあなたがデッドロックを引き起こす可能性が - これは、彼らは両方とも待っているので、2例が完了しないことができる場所ですもう一方の。

この場合、XXX秒間ごとに条件をチェックするタイマーを使用する必要があります。最も簡単な方法は、指定された時間後に呼び出しをトリガするために使用できる 'performSelector'関数を使用することです。

など。

-(void)someFunc 
{ 
    if(!condition) 
    { 
    [self performSelector:@selector(someFunc) withObject:nil afterDelay:1.0]; 
    } 
} 
+0

ビジー待機ループを使用するのではなく、NSConditionを調べることもできます。 –

関連する問題