我无法理解一个异常,它在按下主页按钮几秒钟后抛出。
*** Terminating app due to uncaught exception 'NSDestinationInvalidException', reason: '*** -[GMMLoader performSelector:onThread:withObject:waitUntilDone:modes:]: target thread exited while waiting for the perform'
我正在编写一个应用程序,它使用 Web 服务来加载不同的数据集。Web 服务被添加到 operationQueue。
WebService* op =
[[WebService alloc] initWithSearchString:self.searchBar.text
notificationCenter:self.progressNotification];
[self.queue addOperation:op];
[op addObserver:self
forKeyPath:@"isFinished"
options:NSKeyValueObservingOptionNew
context:NULL];
[op release];
在-(void) start
Web 服务的消息中,我称这个启动选择器在主线程中执行,以便能够与 UI 交互。
- (void)start
{
if (![NSThread isMainThread]){
[self performSelectorOnMainThread:@selector(start) withObject:nil waitUntilDone:YES];
return;
}
...
}
所有这些都可以正常工作,但是当我在 Web 服务处于活动状态时按下主页按钮时,我得到了提到的异常。
我的猜测是,按下主页按钮后主线程停止(是这样吗?)。因此,当前正在运行的操作不再更新/有效。
我试图通过取消或暂停队列中的操作来收听事件UIApplicationWillResignActiveNotification
以对按下主页按钮做出反应。然而这并没有帮助。我的猜测是否正确,因为主线程停止而发生此错误?我还能如何设法停止/取消当前的 Web 服务线程?
提前谢谢你