Я пытаюсь запустить NSTimer в потоке, используя iPhone SDK 3.0. Я думаю, что все делаю правильно (новый runloop и т. Д.). Если я вызываю [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];
}
Когда я удаляю строку, отменяющую таймер, все работает нормально. Я не должен признать его недействительным или я совершаю какую-то другую ошибку?
Спасибо