Я пытаюсь запланировать NSTimer в отдельном потоке, и вот как я это делаю.
-(void) startSpinner {
#ifdef DEBUG_MODE
NSLog(@"Starting Spinner...");
#endif
self.spinnerThread = [[[NSThread alloc] initWithTarget:self selector:@selector(scheduleSpinner) object:nil] autorelease];
[spinnerThread start];
}
-(void) scheduleSpinner {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSTimer *_spinTimer = [NSTimer scheduledTimerWithTimeInterval:SPIN_FIRE_INTERVAL target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addTimer:_spinTimer forMode:NSRunLoopCommonModes];
[runLoop addTimer:_spinTimer forMode:UITrackingRunLoopMode];
[runLoop run];
[pool release];
}
timerFireMethod вращает мой счетчик, и когда нажимается кнопка (кнопка остановки), я отменяю таймери выйти из потока в этом методе.Я делаю опрос здесь, если нажата кнопка вращения.
Проблема в том, что мой timerFireMethod впервые вызывается правильно.Spinner вращается впервые.Но когда я останавливаю свой счетчик и запускаю его снова, счетчик не вращается.Журналы говорят, что во второй раз мой метод "startSpinner" вызывается, но метод "timerFireMethod" не вызывается.
Хуже всего то, что спиннер работает на симуляторе 5-6 раз, 1 раз на устройстве 2g, 4-5 раз на последнем Ipod.Это случайно.
Как это в основном работает?В чем может быть проблема?