ホームボタンが押されてから数秒後にスローされる例外を理解するのに苦労しています。
*** 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 サービス スレッドを停止/キャンセルできますか?
よろしくお願いします