我有一个适当使用NSURLConnection的应用程序。这些异步调用最终完成并正确释放(看起来像),但有时需要一些时间才能完成。
因此,有时我退出应用程序(注意,不仅仅是发送背景),其中一些连接仍处于活动状态。如果我立即重启应用程序,应用程序会在启动时冻结。 (didFinishLaunchingWithOptions似乎永远不会被调用)。
虽然我不确定这些连接是否是问题,但终止或取消任何剩余可能是件好事。有关如何做到这一点的任何建议吗?
关于如何调试重启的奖励点。 (我已经将NSLog语句保存到可下载的文件中)
答案 0 :(得分:7)
您可以通过向其发送取消命令取消任何NSURLConnection。
[connection cancel];
来自Apple docs
取消a的异步加载 请求。一旦调用此方法, 接收人的代表将不再 接收任何消息 NSURLConnection的。
您的启动问题可能很复杂,但很难说不知道您正在下载什么类型的数据以及如何使用它。
答案 1 :(得分:0)
确保您在连接上调用release。在删除最后一个引用之前,它可能不会在套接字上调用shutdown或close。我做了类似这样的事情而没有引用问题。
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection release];
[request release];
答案 2 :(得分:0)
取消上次请求: [NSURLConnection cancelPreviousPerformRequestsWithTarget:self];
取消任何特定要求: [请求取消]; 注意:这里的请求是NSURLConnection的实例