启动按钮启动NSTimer,停止按钮停止它,启动按钮再次启动它。但'无效'给我一个错误?
问题描述:
我有一个启动按钮,以.h文件中声明的计时器开始。然后,我有一个停止按钮,它不会执行[theTimer invalidate];
,然后当我用启动按钮再次启动计时器时,由于被无效而导致错误。启动按钮启动NSTimer,停止按钮停止它,启动按钮再次启动它。但'无效'给我一个错误?
任何想法如何解决这个问题?
答
NSTimer类的使用有些尴尬;而不是将创建/销毁与开始/停止分开,而是全部汇集在一起。换句话说,计时器一旦创建就立即启动,一旦它被销毁就停下来。
因此,您需要使用NSTimer对象的存在作为标志来指示它是否正在运行;是这样的:
//私有方法
@interface MyClass的(){ 的NSTimer * _timer; } - (void)_timerFired; @end
@implementation MyClass的
(IBAction为)startTimer所:(ID)发送方 { 如果(_timer ==无) { _timer = [的NSTimer scheduledTimerWithTimeInterval:1.0F 目标: self selector:@selector(_timerFired) userInfo:nil repeats:YES] retain]; } }
(IBAction为)stopTimer:(ID)发送方 { 如果(!_timer =无) { [_timer无效]; _timer = nil; } }
(无效)_timerFired { 的NSLog(@ “平”); }
后您正在使用的代码示例。 – WrightsCS 2011-02-10 04:12:46
@Nikita Rybak有正确的答案。你可能会得到一个更详细的答案,@安德鲁,如果你发布你的code_。 – aqua 2011-02-10 04:18:33