我的一个ViewController我想在一些时间标准上调用方法updateVisitotsLists
,并且无法确定哪种方式最适合实现它。
1)每次加载/出现视图时,我都想调用此方法。
对于viewDidAppear方法中的这个,我可以在调用[super viewDidAppear];之前调用它,这样就行了,我相信。
2)如果用户仅在此视图上,那么我想在每5秒后调用此方法。
为此,我需要设置NSTimer。我想在viewDidDisappear时停止这个计时器 - 因为不希望它运行不必要。我应该如here所示使用UnScheduled Timer并在出现和停止时启动和停止消失的方法?在viewDidAppear中,我最初调用此方法,然后还设置
NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 5.0
target: self
selector:@selector(updateVisitotsLists:)
userInfo: nil repeats:NO];
实现我想要的最佳方式和方法是什么?任何帮助都非常感谢。
感谢。
更新: -
@Lord Zolt,根据你的评论,我做了以下几点: -
//In .h
@property (strong, nonatomic) NSTimer *timer;
// .m
@synthesize timer;
- (void)viewDidLoad
{
........
[super viewDidLoad];
// CREATE TIMER
timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(onTimerCall:) userInfo:nil repeats:YES];
}
-(void) viewWillDisappear:(BOOL)animated {
[timer invalidate];
timer = nil;
[super viewWillDisappear:animated];
}
-(void) onTimerCall: (NSTimer *) _timer {
// UPDATE VISITOR'S LIST
[self updateVisitotsLists];
}
这是正确的吗?
答案 0 :(得分:2)
我建议使用计时器。
创建NSTimer
属性,但我建议在viewWillDisappear上调用invalidate
。
如果您没有调用invalidate,当视图控制器被解除或弹出时,它将无法取消分配,因为NSTimer将使其保持活动状态。
您发布的代码很好,但有一些修改:
编辑:如果您希望计时器与屏幕相关(也就是说它应该仅在屏幕可见时执行),您应该在viewDid(Will)Appear
中初始化并在viewDid(Will)Disappear
中停止。< / p>