【发布时间】:2013-12-16 17:37:50
【问题描述】:
我正在尝试在我的应用程序中使用计时器,我想在 viewWillAppear 上启动计时器并希望在 viewWillDisappear 方法中停止它。我已经完成了以下编码:
在.h中:
@property (nonatomic, strong) NSTimer *timer;
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:FALSE];
if(!_timer){
_timer = [NSTimer scheduledTimerWithTimeInterval: 5.0
target: self
selector:@selector(reloadInboxMessages)
userInfo: nil repeats:YES];
}
}
-(void)reloadInboxMessages {
NSLog(@"reloadInboxMessages");
[tblvwMessage reloadData];
}
-(void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:FALSE];
NSLog(@"viewWillDisappear");
if([_timer isValid]){
[_timer invalidate];
_timer = nil;
}
}
我认为这将是一项简单的任务,但我不确定为什么它不起作用。有什么问题?
【问题讨论】:
-
用 NSLog 检查你的代码是否输入:if([_timer isValid])
-
“不工作”是什么意思?计时器是在不应该触发的时候触发,还是在应该触发的时候没有触发,还是其他原因?
-
您的代码对我来说很好用。你是说你离开这个控制器后继续看到日志“reloadInboxMessages”?
-
我测试了您的代码(注释 "[tblvwMessage reloadData]" 行)并且工作正常。计时器在视图消失时停止,并在视图出现时重新启动。
-
为了更详细地说明@rdelmar 的问题,您是说您可以在 invalidate 上使用 NSLog,在 reload 方法上使用 NSLog,并且在 after 之后出现重新加载日志消息无效?
标签: ios iphone objective-c nstimer