我的 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 方法,我的应用程序将崩溃。
我可以使用哪些其他方法来运行此线程并处理正在释放的调用对象。