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