0

我试图弄清楚如何在我的应用程序运行时每隔一小时启动一个方法调用。

我创建了以下方法,该方法在加载 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 被调用一次,但以后再也不会调用了。

4

1 回答 1

2

在计时器分配语句中设置 repeats:YES (因此它会自动重复,否则 nstimer 在第一次后会使其自身无效)或在您的 deviceIsAlive 函数中分配一个新计时器。

于 2013-04-09T02:32:34.057 回答