過度釋放:[**VIewController scrollViewDidScroll:]: message sent to deallocated instance

weixin_33782386發表於2016-08-24

修復bug 是開發者經常遇到並樂此不疲的一件事,尤其是看到bug現象就能想到哪了出問題了, 修復之後那種體驗不可言喻,但是 最讓人頭痛的是 ,程式經常崩在EXC_BADACCESS 這種, 今天我就說一下其中一個bug。
先上bug截圖:

1868791-efec3ef87ac22519.png
FDAF5315-FAA1-461E-9A70-311C596B2F9F.png

是不是特別熟悉,但是這種錯誤,讓我們無章可循,不知道究竟是哪裡出了問題,
緊接著,依照我的直覺【哈哈,裝個X,其實是經驗而已了】, 判定可能為殭屍物件,開啟xcode的殭屍物件除錯


1868791-fa3a409268513f6c.png
18C7D4F3-A6FD-4A3E-9BD5-85BB8CCA062B.png

再次出發崩潰,果不其然,此時的控制檯的輸出為:

1868791-d9beea23f572c087.png
2B6DF954-C151-4E0D-B638-867349364EE8.png

至少我們已經定位到了某個VC裡面,而且錯誤原因很明明瞭,scrollViewDidScroll:]: message sent to deallocated instance 即 過度釋放,那麼問題就迎刃而解了,只需要在delloc 方法裡面:
-(void)dealloc{
self.TableView.delegate = nil;
[也可能是ScrollView,看自己介面的情況而定]
}
好吧,總算解決了,繼續苦逼的修復其他bug吧。

相關文章