2009-10-28 83 views
0

我遇到了我的類正在進行一個異步Web調用,並且用戶請求另一個(通過移動地圖)並且似乎無法正確取消NSURLConnection的情況。我已經看到一些解決方案來管理多個異步調用,但我不想這樣做,因爲一旦第二個請求被提出,我不再關心第一個。我看到有一個取消方法,但我試圖只在連接爲零時調用它,但連接似乎永遠不會成爲零,儘管該對象上有釋放。有沒有人有適當的取消異步NSURLConnect的代碼示例?iphone取消異步NSURLConnection

回答

3

我不認爲你理解Objective C消息傳遞或保留/釋放。將保留或釋放發送到對象絕不會導致您爲該對象持有的指針變爲零(儘管該對象可能不再有效)。換句話說:

id a = b; 
[a release]; 

//since release never changes the value of a 
assert(a == b); 

好了,話說回來,如果以某種方式釋放代碼改變對象的指針的值,你把它稱爲對爲零,然後發送另一條消息,它會做什麼。消息到零是默默地丟棄。記住,你所持有的是指向對象的指針,而不是對象本身。

話雖如此,如果你想取消NSURLConnection。您必須在發佈消息之前發送取消消息(通常,發佈消息後發送消息永遠不會正確)。

我真的建議你閱讀蘋果的內存管理documentation