我使用ASIHTTP作爲委託使用我的視圖控制器運行一個http請求,如果用戶在請求完成之前離開視圖控制器,我會在ASIHTTP代碼中獲得一個EXC_BAD_ACCESS正在做一個if(委託...)ASIHTTP - 離開視圖並得到EXC_BAD_ACCESS
在我的視圖控制器dealloc中有什麼我必須做的嗎?如果用戶離開,我只想簡單地刪除請求。
我使用ASIHTTP作爲委託使用我的視圖控制器運行一個http請求,如果用戶在請求完成之前離開視圖控制器,我會在ASIHTTP代碼中獲得一個EXC_BAD_ACCESS正在做一個if(委託...)ASIHTTP - 離開視圖並得到EXC_BAD_ACCESS
在我的視圖控制器dealloc中有什麼我必須做的嗎?如果用戶離開,我只想簡單地刪除請求。
像這樣的問題最常見的原因是ASIHTTPRequest對象仍處於活動狀態,並且其委託字段指向一個現在銷燬的對象。當ASIHTTPRequest嘗試告訴代理請求已完成時,EXC_BAD_ACCESS將會發生,依此類推。
你的dealloc方法爲是asihttprequest代表應具備的對象:
request.delegate = nil;
[request cancel]
[request release]
如果你有在同一時間只有一個請求有效,你必須有相同的代碼的任何地方,你開始一個新的請求,以確保任何以前的請求被正確取消。
如果您有多個請求處於活動狀態,則需要跟蹤所有請求,並取消它們全部的委託。
作爲參考,我一直在使用ASIHTTPRequest約18個月,並且已經爲與取消請求有關的困難競賽條件提供了一些修復。
這通常是您的代碼有問題。發佈一些,我們會試着破譯這個問題。 – esqew 2011-06-13 01:24:13
如果發生崩潰,則會出現回溯或崩潰日誌。發表它。 – bbum 2011-06-13 05:40:19