2011-11-05 70 views
0

这可能听起来是一个新手问题,但我是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时取消连接,为什么是这样?
  • 如果连接状态为 成功,并且不发送取消消息,如何检查上一个代码段?

回答

0

发布它后,将您的ivar设置为nil

+0

我只是通过工具类来做同样的事情,即通过传递连接到某个方法并释放,分配给该方法中的零。它根本没有工作。但是直接用相同的代码来完成。将您的答案标记为正确。事实上nil不应该在Utiliy方法中被赋值,因为Object指针被复制。对我感到羞耻! – deimus