我將視圖控制器設置爲局部變量ASIHTTPFormDataRequest request
的委託。ASIHTTPRequest popViewControllerAnimated:=>委託EXEC_BAD_ACCESS
但是,在請求完成之前點擊「返回」,彈出並取消分配視圖控制器。因此,當請求完成並將消息-requestDidFinish:
發送給現在不存在的委託時,應用程序會崩潰,並出現異常。
我該如何解決這個問題?
我可以想到解決這個問題的一種方法是在導航控制器彈出它之後立即將代理設置爲零。但是,如果這是解決方案,我該怎麼做? (ARC的
weak
引用將現在是甜的。)我能想到的另一種方法是使
request
視圖控制器的實例變量並調用視圖控制器的dealloc
方法[request clearDelegatesAndCancel]; [request release];
。這種方法概述在ASIHTTPRequest Example Code,但我已經被建議最好是請求局部變量而不是實例變量。而且,這個特定的視圖控制器是一個設置表視圖控制器,並有13個開關。爲了自動保存到服務器,每次切換創建&每次切換時都會發送一個新請求。如果我製作了ivars,那麼我必須製作13個。這是很多代碼!
想法?想法?
謝謝你的解決方案。這是一個諾貝爾和完全有效的答案,但我選擇[保留請求委託](http://stackoverflow.com/questions/6515191/asihttprequest-popviewcontrolleranimated-delegate-exec-bad-access/6529829#6529829)像' NSURLConnection'確實是因爲我相信Apple的設計決策,它更乾淨,並且它允許請求繼續加載,即使視圖控制器被彈出,這實際上是我想要的。 – ma11hew28