我试图弄清楚如何在我的应用程序运行时每隔一小时启动一个方法调用。
我创建了以下方法,该方法在加载 ViewController 后启动,但问题是,它运行一次,然后再也不会运行。
这就是我的代码的样子。
#define kMaxAliveTimeSeconds 5.0
// currently only running the query every 5 seconds for testing
- (void)deviceTimer {
if (!isAliveTimer) {
isAliveTimer = [NSTimer scheduledTimerWithTimeInterval:kMaxAliveTimeSeconds
target:self
selector:@selector(deviceIsAlive)
userInfo:nil
repeats:NO];
}
else {
if (fabs([isAliveTimer.fireDate timeIntervalSinceNow]) < kMaxAliveTimeSeconds-0.5) {
[isAliveTimer setFireDate:[NSDate dateWithTimeIntervalSinceNow:kMaxAliveTimeSeconds]];
}
}
}
- (void)deviceIsAlive {
// do stuff here
}
唯一的事情是 deviceIsAlive 被调用一次,但以后再也不会调用了。