VC更改后无效NSTimer

时间:2016-09-01 13:46:26

标签: ios objective-c nstimer

我在我的VC中有一个NSTimer,并且它的用户发送位置很好,我无法在viewDidDisappear上使其失效,因为我还需要在后台发送。

myTimer=[NSTimer scheduledTimerWithTimeInterval:2.0 target: self
                                                 selector: @selector(sendDataToSocket) userInfo: nil repeats: YES];

但问题是,当我再次实例化相同的VC时,它再次启动NSTimer,并且有2个计时器工作。那我怎么能停止前一个或任何其他解决方案

任何帮助将不胜感激 感谢

2 个答案:

答案 0 :(得分:1)

您可以使用单例类或简单地使用appDelegate类来声明appDelegate中的myTimer对象并在viewController中使用它。

这将有一个计时器的单个对象,您不需要创建多个对象,您的最终目标将得到解决。希望这有帮助!

答案 1 :(得分:0)

您应该在AppDelegate

中处理计时器实例化机制

所以,在ViewController中,每次实例化时,都可以调用

[((YourAppDelegate*)[UIApplication sharedApplication].delegate) startMyTimer:self];

其中startMyTimer可以像这样定义

-(void)startMyTimer:(id)aTarget
{
    if(myTimer)
    {
         [myTimer invalidate];
         myTimer = nil;
    }
    myTimer = [NSTimer scheduledTimerWithTimeInterval: 2.0
                                               target: aTarget
                                             selector: @selector(sendDataToSocket)
                                             userInfo: nil 
                                              repeats: YES];
}

因此您确定在您的应用中只有一个myTimer始终有效,您可以调用ViewController sendDataToSocket