[英]How to stop/invalidate NStimer
我在用
[NSTimer scheduledTimerWithTimeInterval:0.1f
target:self
selector:@selector(update)
userInfo:nil
repeats:YES];
我想停止调用这个计时器。
viewDidDisappear
我怎样才能做到这一点? 失效?
在.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;
}
试试这个
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];
}
是的,您将使用NSTimer
的- (void)invalidate
实例方法。
当然,要做到这一点,您必须将从[NSTimer scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:]
返回的NSTimer
实例保存到视图控制器的ivar或属性中,以便您可以在viewDidDisappear
访问它。
invalidate
NSTimer
方法用于停止计时器
- (void) viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[self.timer invalidate];
self.timer = nil;
}
如果你不是ARC,那就别忘了[self.timer release];
要首先停止或使NSTimer无效,您必须在全局范围内为NSTimer创建实例。
Timer=[NSTimer scheduledTimerWithTimeInterval:0.1f
target:self
selector:@selector(update)
userInfo:nil
repeats:YES];
之后尝试这样,
if (Timer != nil) {
[Timer invalidate];
Timer = nil;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.