繁体   English   中英

如何停止/使NStimer无效

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM