The*_*mer 21 cocoa objective-c nstimer nsrunloop
所以基本上,我有这个计时器,它应该在收到一个键事件时重复,并在用户释放键时失效.但是,即使通过调用addTimer:forMode:NSRunLoop ,我也无法"验证"计时器.有谁知道为什么会发生这种情况以及如何解决这个问题?谢谢.
Nek*_*kto 37
您不能使用无效的计时器.
来自Apple Docs:
一旦在运行循环上调度,计时器将以指定的间隔触发,直到它失效.非重复计时器在触发后立即使其自身无效.但是,对于重复计时器,您必须通过调用其invalidate方法自行使计时器对象无效.调用此方法请求从当前运行循环中删除计时器; 因此,您应始终从安装计时器的同一线程中调用invalidate方法.使计时器失效会立即禁用它,以使其不再影响运行循环.然后,run循环在invalidate方法返回之前或之后的某个时间点删除并释放计时器.一旦失效,就不能重用计时器对象.
Mic*_*nen 14
一旦您使NSTimer无效,就不应再使用它.
而是创建一个新的计时器实例,并使用该实例添加到NSRunLoop的addTimer方法.就个人而言,我更喜欢只调用NSTimer的scheduledTimerWithTimeInterval,因为它可以一次性完成所有操作.
来自NSTimer的文档:
调用此方法请求从当前运行循环中删除计时器; 因此,您应始终从安装计时器的同一线程中调用invalidate方法.使计时器失效会立即禁用它,以使其不再影响运行循环.然后,run循环在invalidate方法返回之前或之后的某个时间点删除并释放计时器.一旦失效,就不能重用计时器对象.
| 归档时间: |
|
| 查看次数: |
11092 次 |
| 最近记录: |