NSTimer повторяется на 4 - PullRequest
0 голосов
/ 13 июня 2019

У меня есть таймер, который я хочу повторять каждую секунду, но счетчик повторяется на 4 каждый раз, и я не уверен, почему. печатает: 4,4,8,8,12,12,16,16,20

timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFunction:) userInfo: nil repeats:YES];

-(void)timerFunction:(NSTimer *)timer {
    NSLog(@"%d", timerCounter);
    timerCounter += 1;
    NSLog(@"%d", timerCounter);
    if(timerCounter >= 20){
        [self kestrelAlert];
        timerCounter = 0;
        [[self cancelButton] setHidden:YES];
    }


}

1 Ответ

0 голосов
/ 13 июня 2019

Похоже, что вы звоните 2 раза, поэтому перед назначением сделайте

if (timer == nil) {
 timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFunction:) userInfo: nil repeats:YES];
}
else {
    // active
}

Также вы печатаете его дважды

NSLog(@"%d", timerCounter); // 1
timerCounter += 1;
NSLog(@"%d", timerCounter); // 2
...