iPhone NSTimer更改重复时间

时间:2011-06-24 12:31:41

标签: iphone

我有一个静态方法,我在其中设置NSTimer,但有时我需要更改重复时间。如果我使用静态方法怎么做?应该是这样的:

+ (void)setupTimer:(BOOL)updateTime newTime:(int)time {
     NSTimer *timer;
     if (updateTime) {
         [timer invalidate];
         timer = nil;
     }
     timer = [NSTimer scheduledTimerWithTimeInterval:time 
                                              target:self 
                                            selector:@selector(myMethod:)
                                            userInfo:nil 
                                             repeats:YES];
}

但它不起作用......而且我知道在这种情况下我无法使我的计时器失效...而且我也不能在静态方法中使用NSTimer声明为类的成员...怎么样?感谢....

2 个答案:

答案 0 :(得分:2)

只需在变量前添加static

static NSTimer *timer;

如果你覆盖了计时器变量,你应该首先使它失效,否则你将有一个计时器在运行,你将无法再访问它。

答案 1 :(得分:1)

我认为您应该能够在没有静态函数的情况下编写此函数,但您也可以使用静态函数执行此操作。如果该类只应该有一个实例,那么使用单例模式。

使用静态函数执行此操作,然后使用

static NSTimer *timer

但您还必须保留新的并且还释放旧计时器,因为函数scheduledTimer...分配NSTimer实例但也自动释放它。如果不保留该计时器,那么计时器将在以后取消分配,并且不会调用您的方法。