我在加載sqlite數據庫中的數據的主應用程序委託中創建了一個對象數組。當我加載TableView時,該類中的一個屬性被設置爲指向對象數組。然後,在顯示TableView時,它正確地返回數組的行數,並從數組中相應對象的屬性中顯示單元格中的文本。objective-c tableview在重新加載時崩潰
我還在導航欄的右上角有一個刷新按鈕,它會從網絡中下載並解析XML文件,然後更新數據庫。
然後,我重新創建數據庫中的主對象數組,然後將我的TableView屬性指向新的數組,然後讓TableView重新加載數據。這是它然後崩潰與EXC_BAD_ACCESS。
我已經介入調試器,並確定一切正確,直到reloadData
調用。數據庫和主數組都是同步的,並且自定義TableView屬性也指向主數組。
然後,當我使用調試器時,我注意到了一些事情。首先,當它調用numberOfRowsInSection
時,指向主數組的指針是正確的,行數是正確的。其次,當它到達第一個cellForRowAtIndexPath
調用時,指向主數組的指針指向內存的無效部分。實際的內存地址是相同的,但對象數組已經消失。
我不明白如何在重新加載這樣的數組中消失,因爲我的引用計數應該仍然大於零,所以應該沒有垃圾回收。所以我的問題是,有沒有人知道可能會發生什麼?其次,我如何確定問題的確切位置?
我應該指出,我假設數組正在被釋放。調試器將數組的值顯示爲「{(int)[$ VAR count]}對象」,而不是實際的對象數。 – richard