我有一个静态方法,我在其中设置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声明为类的成员...怎么样?感谢....
答案 0 :(得分:2)
只需在变量前添加static
。
static NSTimer *timer;
如果你覆盖了计时器变量,你应该首先使它失效,否则你将有一个计时器在运行,你将无法再访问它。
答案 1 :(得分:1)
我认为您应该能够在没有静态函数的情况下编写此函数,但您也可以使用静态函数执行此操作。如果该类只应该有一个实例,那么使用单例模式。
使用静态函数执行此操作,然后使用
static NSTimer *timer
但您还必须保留新的并且还释放旧计时器,因为函数 scheduledTimer...
分配NSTimer
实例但也自动释放它。如果不保留该计时器,那么计时器将在以后取消分配,并且不会调用您的方法。