溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

UITableView中的數據源對象提前釋放

發布時間:2020-07-18 02:54:23 來源:網絡 閱讀:585 作者:maybe_home 欄目:開發技術

請看如下代碼:其中_dataSource為NSArray的實例對象

UITableView中的數據源對象提前釋放

UITableView中的數據源對象提前釋放

運行之后,滑動tableview,會直接crash,崩潰現象如下:

UITableView中的數據源對象提前釋放


沒有任何崩潰信息;

解決方案:

第1步:程序在cell.textLabel.text = _dataSource[indexPath.row]處crash,但控制臺沒有任何的reason;我們可以通過命令行或則Print的形式查看對應對象是否存在問題;

第2步:我們這次采用命令行模式的形式,先用po打印看一下當前這句話涉及到的對象,分別是什么?如下圖:

UITableView中的數據源對象提前釋放

第3步:通過控制臺,我們法線打印輸出數據源中的某個元素的時候,出現了問題,reason:The process has been returned to the state before expression evaluation.,那么,我們得思考一下該對象是否涉及到內存提前釋放的情況了;

第4步:現在,我們打開查看內存檢測選項:

如下圖,選擇 Edit Scheme -> run -> Diagnostics, 選中 Objective -c Enable Zombie Objects, 最后Close

UITableView中的數據源對象提前釋放

再次運行程序,滑動tableview,此時控制臺會打印輸出如下提示:

UITableView中的數據源對象提前釋放

那么,說明我們的_dataSource對象優內存問題;

第5步:回頭檢查我們的_dataSource,為NSArray對象,創建方式位便利構造器初始化方式,所以,我們需要修改一下:

注意:不要忘記在dealloc中進行釋放,當前為手動管理內存模式下

UITableView中的數據源對象提前釋放


再次運行,滑動tableview,一切正常,搞定



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女