1. 程式人生 > >關於iOS UITableView 資料來源陣列載入完成之後,滑動時出現cell為空的問題解決筆記

關於iOS UITableView 資料來源陣列載入完成之後,滑動時出現cell為空的問題解決筆記

今天中午,一朋友遇到一個問題,說遇到UITableView 載入資料時,資料來源陣列正常載入,且有資料,並且能夠正常顯示第一屏,但是在滑動時則出現如下問題,如下圖:

加斷點除錯,發現除第一屏的8條資料之後,資料來源陣列中的資料也是除了前8條之後的資料都為空,此處特別說明,朋友在將plist檔案讀取之後做了轉換,將資料轉換成實體類之後存於陣列中。除錯發現通過indexPath.row 能夠正常取得實體類物件,且不為nil,但是開啟實體類發現其中屬性全部為nil。經過幾次逐步除錯檢視,也未發現問題。但後來對程式碼進行檢查時發現,問題出現在實體類的屬性定義關鍵字上,如下圖:


可能一些有經驗的朋友已經發現問題所在了。對,就是關鍵字,定義屬性時,一般都是(nonatomic,retain/copy),但是此處卻用了weak,此關鍵字大概意思表示此屬性為弱引用,即在沒有被用到時會即時釋放,所以就導致了在載入cell時,只用到了陣列前8條資料,其餘的陣列中儲存的實體物件的屬性會被釋放而產生當滑動TableView時cell是空白的問題!