請看如下代碼:其中_dataSource爲NSArray的實例對象
運行之後,滑動tableview,會直接crash,崩潰現象如下:
沒有任何崩潰信息;
解決方案:
第1步:程序在cell.textLabel.text = _dataSource[indexPath.row]處crash,但控制檯沒有任何的reason;我們可以通過命令行或則Print的形式查看對應對象是否存在問題;
第2步:我們這次採用命令行模式的形式,先用po打印看一下當前這句話涉及到的對象,分別是什麼?如下圖:
第3步:通過控制檯,我們法線打印輸出數據源中的某個元素的時候,出現了問題,reason:The process has been returned to the state before expression evaluation.,那麼,我們得思考一下該對象是否涉及到內存提前釋放的情況了;
第4步:現在,我們打開查看內存檢測選項:
如下圖,選擇 Edit Scheme -> run -> Diagnostics, 選中 Objective -c Enable Zombie Objects, 最後Close
再次運行程序,滑動tableview,此時控制檯會打印輸出如下提示:
那麼,說明我們的_dataSource對象優內存問題;
第5步:回頭檢查我們的_dataSource,爲NSArray對象,創建方式位便利構造器初始化方式,所以,我們需要修改一下:
注意:不要忘記在dealloc中進行釋放,當前爲手動管理內存模式下
再次運行,滑動tableview,一切正常,搞定