我在我的VC中有一个NSTimer
,并且它的用户发送位置很好,我无法在viewDidDisappear
上使其失效,因为我还需要在后台发送。
myTimer=[NSTimer scheduledTimerWithTimeInterval:2.0 target: self
selector: @selector(sendDataToSocket) userInfo: nil repeats: YES];
但问题是,当我再次实例化相同的VC时,它再次启动NSTimer
,并且有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