目标c-iOS:为什么计时器(和performSelector)会立即触发所选方法



我试过同时使用这两种:

[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消息。

相关内容

最新更新