繁体   English   中英

当NSURLConnection处于活动状态时,按下主屏幕按钮后,iPhone NSDestinationInvalidException

[英]iPhone NSDestinationInvalidException after hitting home button while NSURLConnection active

我在理解Exception时遇到了麻烦,该异常在按下主屏幕按钮几秒钟后引发。

*** 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];

在Web服务的-(void) start消息中,我将此启动选择器称为要在主线程中执行,以便能够与UI进行交互。

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

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

所有这些工作都很好,但是当我在Web服务处于活动状态时按主页按钮时,出现了上述异常。

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

我试图收听事件UIApplicationWillResignActiveNotification以通过取消或挂起队列中的操作对按下主屏幕按钮做出反应。 但是,这没有帮助。 我猜对了吗,由于主线程停止而发生此错误? 我还能如何停止/取消当前的Web服务线程?

预先感谢您Zerd

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

因此,创建了一种永不停止的僵尸线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM