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