0

我无法理解一个异常,它在按下主页按钮几秒钟后抛出。

*** 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) startWeb 服务的消息中,我称这个启动选择器在主线程中执行,以便能够与 UI 交互。

- (void)start
{
    if (![NSThread isMainThread]){

        [self performSelectorOnMainThread:@selector(start) withObject:nil waitUntilDone:YES];
        return;
    }
    ...
}

所有这些都可以正常工作,但是当我在 Web 服务处于活动状态时按下主页按钮时,我得到了提到的异常。

我的猜测是,按下主页按钮后主线程停止(是这样吗?)。因此,当前正在运行的操作不再更新/有效。

我试图通过取消或暂停队列中的操作来收听事件UIApplicationWillResignActiveNotification以对按下主页按钮做出反应。然而这并没有帮助。我的猜测是否正确,因为主线程停止而发生此错误?我还能如何设法停止/取消当前的 Web 服务线程?

提前谢谢你

4

1 回答 1

0

我发现了错误。事实证明,这不是网络服务本身的问题,而是地理定位器的问题,它被创建并启动了两次。

因此,创建了某种僵尸线程,它永远不会停止。

于 2012-10-30T10:12:21.310 回答