不知道我的問題是不是很好解決,請大家幫忙
有一個類,是NSTimer類型的timer,當執行IBAction時,調用一個方法,裡面有下面代碼:
if (timer) timer = nil;
timer = [NSTimer timerWithTimeInterval:0.2 target:self selector:@selector(removeOverlay) userInfo:nil repeats:NO];
類中還有另一個方法:
- (void)removeOverlay {
...
}
但是沒有像預期的間隔0.2秒之後觸發
不知道為什麼?
不用scheduled方式初始化的,需要手動addTimer:forMode: 將timer添加到一個runloop中。而scheduled的初始化方法將以默認mode直接添加到當前的runloop中.
舉例:
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO];
或
NSTimer *myTimer = [NSTimer timerWithTimeInterval:3.0 target:selfselector:@selector(timerFired:) userInfo:nil repeats:NO];
[[NSRunLoop currentRunLoop] addTimer:myTimer forMode:NSDefaultRunLoopMode];