我试过用这两个:
[NSTimer scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(enableGestures)
userInfo:nil
repeats:NO];
和
[self performSelector:@selector(enableGestures) withObject:nil afterDelay:2.0];
触发enableGestures方法,但在两个版本中都会触发两次! (首先是定时器启动,第二次是2秒后)。第二个片段也是如此。为什么?
感谢
答案 0 :(得分:1)
scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
消息的选择器应具有此签名:
- (void)enableGestures:(NSTimer*)theTimer
我写了一些测试代码,如果选择器没有正确的签名,有时会立即调用选择器,然后在计时器完成时再次调用。当我将其更改为正确的签名时,在适当的延迟后首先调用选择器。我从未在格式正确的签名中看到这个问题,并且大约一半的时间在签名不正确的情况下看到了这个问题。
我尝试了第二个版本,每次都正常工作。
如果这种情况与两种版本的计时代码一致,则代码中某处的其他内容正在发送enableGestures
消息。