Я пытаюсь запланировать вызов метода GNUStep Objective-C для запуска каждую секунду в течение различного числа секунд. Я пытаюсь использовать NSTimer для планирования вызова метода, но метод-обработчик никогда не вызывается.
Вот мой код:
Timer.m
:
- (id) init {
self = [super init];
if(self) {
_ticks = 0;
}
return self;
}
- (void) startWithTicks: (unsigned int) ticks {
_ticks = ticks; //_ticks is an unsigned int instance variable
if(_ticks > 0) {
[NSTimer scheduledTimerWithTimeInterval: 1.0
target: self
selector: @selector(onTick:)
userInfo: nil
repeats: YES];
}
}
- (void) onTick: (NSTimer*) timer {
NSLog(@"tick");
_ticks--;
if(_ticks == 0) {
[timer invalidate];
timer = nil;
}
}
main.m
:
int main(int argc, const char* argv[]) {
Timer* t = [[Timer alloc] init];
NSLog(@"Setting timer");
[t startWithTicks: 3];
usleep(5000);
NSLog(@"End of timer");
return 0;
}
Я ожидаю, что результат будет
Setting timer
tick
tick
tick
End of timer
Однако на выходе получается
Setting timer
End of timer
Почему это так и как я могу это исправить?