如何正确取消NSURLConncetion
问题描述:
这可能听起来是一个新手问题,但我是iOS开发新手。如何正确取消NSURLConncetion
我宣布NSURLConnection* mImageUploadConnection
为实例成员。 并运行以下来创建它。
mImageUploadConnection = [[NSURLConnection alloc] initWithRequest:someRequest delegate:self startImmediately:YES];
分配后保留计数为2,为什么? (这可能是苹果公司内部的东西,对吗?我仍然需要释放连接一次?)。
我释放在
- didFailWithError
- connectionDidFinishLoading
方法有关,但我也需要取消连接一些情况下,当用户从当前导航视图弹出。即取消可能在mImageUploadConnection
尚未完成或失败时发生。我以如下方式取消连接:
if (mUploadeImagConnection != nil) {
[mUploadeImageConnection cancel];
[mUploadeImagConnection release];
}
当连接未完成或失败时连接被正确取消。 但是,当连接成功完成时,最后的代码片段失败(错误的访问),即它已经被释放一次。
- 连接成功完成后,mUploadeImagConnection的保留计数为1时取消连接,为什么是这样?
- 如果连接状态为 成功,并且不发送取消消息,如何检查上一个代码段?
答
发布它后,将您的ivar设置为nil
。
我只是通过工具类来做同样的事情,即通过传递连接到某个方法并释放,分配给该方法中的零。它根本没有工作。但是直接用相同的代码来完成。将您的答案标记为正确。事实上nil不应该在Utiliy方法中被赋值,因为Object指针被复制。对我感到羞耻! – deimus