2011-11-05 67 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