Я пытаюсь запустить NSTimer в потоке с помощью iPhone SDK 3.0. Думаю, все делаю правильно (новый цикл выполнения и т. Д.). Если я вызываю [timer invalidate] в viewDidDissappear, я получаю эту ошибку:
bool _WebTryThreadLock (bool), 0x3986d60: попытка получить веб-блокировку из потока, отличного от основного потока или веб-потока. Это может быть результатом вызова UIKit из вторичного потока. Сбой сейчас ... Программа получила сигнал: «EXC_BAD_ACCESS».
Вот мой код:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[activityIndicator startAnimating];
NSThread* timerThread = [[NSThread alloc] initWithTarget:self selector:@selector(timerStart) object:nil]; //Create a new thread
[timerThread start]; //start the thread
}
-(void)timerStart
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSRunLoop* runLoop = [NSRunLoop currentRunLoop];
//Fire timer every second to updated countdown and date/time
timer = [[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(method) userInfo:nil repeats:YES] retain];
[runLoop run];
[pool release];
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[timer invalidate];
}
Когда я удаляю строку, делающую таймер недействительным, все работает нормально. Я не должен аннулировать это или я совершаю какую-то другую ошибку?
Спасибо