我正在使用
[NSTimer scheduledTimerWithTimeInterval:0.1f
target:self
selector:@selector(update)
userInfo:nil
repeats:YES];
我想停止调用这个计时器。
viewDidDisappear
我该怎么做?无效?
答案 0 :(得分:26)
在.h文件中声明NSTimer *myTimer
。
像汤姆这样分配实例
myTimer = [NSTimer scheduledTimerWithTimeInterval:0.1f
target:self
selector:@selector(update)
userInfo:nil
repeats:YES];
使用此
停止和无效- (void) viewDidDisappear:(BOOL)animated
{
[myTimer invalidate];
myTimer = nil;
}
答案 1 :(得分:4)
试试这个
viewController .h
NSTimer *timer;
viewcontroller.m
timer = [NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(pollTime)
userInfo:nil
repeats:YES];
- (void) viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[timer invalidate];
}
答案 2 :(得分:1)
是的,您可以使用- (void)invalidate
的{{1}}实例方法。
当然,为此,您必须将从NSTimer
返回的NSTimer
实例保存到视图控制器的ivar或属性中,以便您可以在[NSTimer scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:]
中访问它
答案 3 :(得分:1)
invalidate
NSTimer
的方法用于停止计时器
- (void) viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[self.timer invalidate];
self.timer = nil;
}
如果您不是ARC,请不要忘记[self.timer release];
答案 4 :(得分:1)
首先,您必须在全局范围内为NSTimer创建实例,以便停止或使NSTimer无效。
Timer=[NSTimer scheduledTimerWithTimeInterval:0.1f
target:self
selector:@selector(update)
userInfo:nil
repeats:YES];
之后尝试这样,
if (Timer != nil) {
[Timer invalidate];
Timer = nil;
}