从另一个视图控制器访问后,使NSTimer对象无效

时间:2016-05-12 10:16:28

标签: ios objective-c pthreads

场合

我有两个视图控制器 VC1 VC2 。 在 VC1 中,我需要使用 x秒 间隔连续调用选择器,直到 t秒(其中x

我正在使用NSTimer对象来管理它。如果我在 VC1 中,则NSTimer对象正常工作。它是在 x second 之后调用它自己的。这是我的代码

timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(methodName) userInfo:nil repeats:YES];

我也可以通过[timer invalidate];

停止

问题:

现在我要去 VC2 ,然后再回到 VC1

如何停止 VC1 中的timer

感谢。

3 个答案:

答案 0 :(得分:1)

您可以停止使用中的计时器

- (void)viewDidDisappear:(BOOL)animated {
     [timer invalidate]
 }

答案 1 :(得分:0)

您可以使用委托来实现它。

您只需要在VC2中创建委托,然后在VC1和委托方法(在VC1中)中实现,您只需要使NSTimer无效。

答案 2 :(得分:0)

您可以通过实施forword声明来实现此目的

@class VC1 VC2 并在VC1中创建一个BOOL属性

VC2 推送 VC1 时设置VC1.property = true

现在在viewWillAppear方法中检查 VC1

中的这个布尔属性

如果此属性为真{; 1}}并且还将invalidate timer设置为nil对象。

希望这可以帮助您轻松。