iOS アプリケーションに問題があります。
Web API にリクエストを送信していますが、バックグラウンド スレッドで実行しています。このメソッドを持つ Service というクラスがあります。
- (void)searchForRoutesFrom:(NSNumber *)startStationId
to:(NSNumber *)endStationId
delegate:(id<WAMSServiceDelegate>)delegateOrNil
{
RouteSearchRequest *request = [[RouteSearchRequest alloc] init];
...request populate ...
[NSThread detachNewThreadSelector:@selector(searchForRoutesInTheBackground:)
toTarget:self withObject:request];
}
- (void)searchForRoutesInTheBackground:(RouteSearchRequest *)request
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
...make the request and call back...
}
これはうまく機能していますが、ユーザーが (このサービスを使用して) ビューを離れることにした場合、スレッドが開始される直前に、サービス オブジェクトの割り当てが解除されます。スレッドが開始されると、searchForRoutesInTheBackground メソッドの呼び出しが試行され、アプリケーションがクラッシュします。
このスレッドを実行し、解放された呼び出しオブジェクトを処理するために、他にどのようなアプローチを使用できますか?