有人請向我解釋爲什麼viewcontroller dealloc方法不會被調用時,我按下uinavigationcontroller後退?何時取消在uinavigationcontroller nsurlconnection
我想正確取消我的nsurlconnection,因此它不會嘗試顯示彈出並崩潰,因爲它的委託不再有效。
NSURLRequest *request = [ [ NSURLRequest alloc ] initWithURL: [ NSURL URLWithString: [ NSString stringWithFormat: @"http://www.url.com" ], string1, string2 ] ] ];
connection = [ [ NSURLConnection alloc ] initWithRequest: request delegate: self ];
[ request release ];
我釋放connectionDidFinishLoading和didFailWithError連接,但我想,當用戶按下後退按鈕取消和釋放連接:
我NSURLConnection的如下初始化。最合乎邏輯的地方似乎是dealloc方法,但我懷疑這不會被調用,因爲連接保留了viewcontroller。
當按下後退按鈕時,確保連接被取消的最佳方法是什麼?我不想使用viewwilldissapear,因爲我以模態方式呈現另一個視圖控制器,這不應該成爲取消的理由(除非在模式視圖控制器中會出現相同的問題,彈出+崩潰)。
'NSURLConnection'does在初始化時保留其委託並在連接完成加載,失敗或取消時釋放它。 – albertamg
如何處理暫停?在出現超時彈出窗口之前,用戶將彈出視圖控制器。當最終發生超時時,會導致崩潰.. :-( – Ivo
「... crash,因爲它的委託不再有效」。如果NSURLConnection保留它的委託,確保它不是'dealloc 'ated(除非它被過度釋放到其他地方)? – albertamg