您好,登錄后才能下訂單哦!
本文轉(zhuǎn)載自無雙的日志.
眾所周知,iOS開發(fā)的時(shí)候,使用ARC的話,dealloc函數(shù)是不需要實(shí)現(xiàn)的,寫了反而會出錯(cuò)。
但有些特殊的情況,dealloc函數(shù)還是需要的。
比如,在畫面關(guān)閉的時(shí)候,需要把ViewController的某些資源釋放,
在viewDidDissppear不一定合適,viewDidUnload一般情況下只在memory warning的時(shí)候才被調(diào)用。
不用ARC的情況下,我們自然會想到dealloc函數(shù)。
其實(shí)ARC環(huán)境下,也沒有把dealloc函數(shù)禁掉,還是可以使用的。只不過不需要調(diào)用[supper dealloc]了。
舉個(gè)例子,畫面上有UIWebView,它的delegate是該畫面的ViewController,在WebView載入完成后,需要做某些事情,比如,把indicator停掉之類的。
如果在WebView載入完成之前關(guān)閉畫面的話,畫面關(guān)閉后,ViewController也釋放了。但由于WebView正在載入頁面,而不會馬上被釋放,等到頁面載入完畢后,回調(diào)delegate(ViewController)中的方法,由于此時(shí)ViewController已經(jīng)被釋放,所以會出錯(cuò)。(message sent to deallocated instance)
解決辦法是在dealloc中把WebView的delegate釋放。
-(void)dealloc {
self.webView.delegate = nil;
}
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。