2011-11-14 15 views
2

の特定の数は、それはそうのようなNSTimerを実行することは可能ですか?だから、もし私が2秒間(.05の間隔を想定して)走らせたいのであれば、それを40回実行するように指定できますか?これは可能ですか?実行NSTimer回

答えて

3

YourViewController.h

NSTimer *f; 
NSInteger counter; 

YourViewController.m

- (void)setup { 
    // initialization code 
    counter = 0; 
    f = [[NSTimer alloc] initWithFireDate:[NSDate date] 
           interval:.05 
            target:self 
           selector:@selector(checkForCollisions) 
           userInfo:nil repeats:YES]; 

    NSRunLoop *runner = [NSRunLoop currentRunLoop]; 
    [runner addTimer:f forMode: NSDefaultRunLoopMode]; 
} 

- (void)checkForCollisions { 
    // handle check 

    counter++; 
    if (counter >= 40) { 
     [f invalidate]; 
     [f release]; 
    } 
} 
+0

また、実行ループモードであることを意識変化が発射からタイマーを遅らせることができます。 –

0
static int numberOfTimes = 0; 
static int inAndOut = 0; 
... 

int interval = 0.5; 
int 2seconds = 120; 
numberOfTimes = 2seconds/interval; 

- (void) checkForCollisions { 
    if (numberOfTimes <= inAndOut) { 
     //check collisions 
    } 
} 
0

checkForCollisionsメソッドでカウンタを減らすだけです。

関連する問題