特定のビューでは、起動タイミングが NSTimeIntervals の配列に基づいている場合に特定のメソッドを起動させたいと考えています (これは、double 値を保持する NSArray として保持しています)。
したがって、関連するタイミングに従って関連するアクションを実行するメソッドがあり、このメソッド内で同じメソッドを (再帰的に) 呼び出して、次のスケジュールされた時間に再度起動します。
-(void) actionMethod:(int)someDataINeed {
//do something and then...
if (someDataINeed == someDefinitionIHaveToBreakTheLoop) {
return;
}
double nextFire = [self aMethodThatCalculatesTheNextFiringTime];
NSNumber * nextDataINeed = [NSNumber numberWithInt:someDataINeed+1];
NSTimer * aTimer = [NSTimer scheduledTimerWithTimeInterval:nextFire
target:self
selector:@selector(actionMethod:)
userInfo:nextDataINeed
repeats:NO];
}
うーん...うまくいきません(うまくいったとしても、私はそれについて尋ねません...)。NSLog を実行すると、時間がまったく実行されていないように見え、タイマーがある種のループで呼び出され、定義したタイミングに従って「起動」されていないようです。nextFire double データは正しいです (私の定義によると)。
間違っている場合は、この種のアクションを実行する方法を教えていただければ幸いです。
私がそれを正しく書いたとしても、単に間違って書いた場合、私の「バグ」をキャッチする目も高く評価されます...