В моем приложении произошли сбои При проверке журналов и использовании atos он точно сообщает мне, где я получаю сбой, и именно здесь я говорю моему NSRunLoop:
/**
* Create a new thread for the timer
*
* @version $Revision: 0.1
*/
- (void)createTimerThread {
NSThread *timerThread = [[NSThread alloc] initWithTarget:self selector:@selector(startTimerThread) object:nil];
[timerThread start];
[timerThread release];
}//end
/**
* Start the actual timer
*
* @version $Revision: 0.1
*/
- (void)startTimerThread {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
// Start timer
self.countTimer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateCounter:) userInfo:nil repeats:YES];
[runLoop run];// <--- Crash happened here
[pool release];
}//end
/**
* Update the counter
*
* @version $Revision: 0.1
*/
- (void)updateCounter:(NSTimer *)theTimer {
// Does tons of timer stuff here
}//end
Как видите, сбой происходит на [runLoop run]
, но я понятия не имею, почему. Обычно это происходит во второй раз, когда я вызываю метод createTimerThread.
Что я здесь не так делаю? Все, что я хотел сделать, это запустить таймер в фоновом режиме, чтобы его не было в главном потоке, потому что мне нужно было обновить UILabel
.
Должен ли я использовать что-то новое, например, Grand Central Dispatch (GCD)?