2012-07-12 24 views
1

這是一個理論問題而不是一個編程問題。正如你所知道的,當你在iOS中實例化一個表格視圖時,你必須考慮出列和重用表格單元格,當它們滾動進入和離開視圖時。iOS:爲什麼UITableView出列和重用單元格?

令人困惑的是,所有填充單元格的數據都被緩存了。當您在Safari瀏覽器中查看網頁時,您將滾動瀏覽經過滾動的更多圖像和文本。我安裝的iOS遊戲比簡單的桌子使用了更多的數據(例如Asphalt 6)。所以我只是很好奇爲什麼蘋果會出現和重複使用表格單元的麻煩。謝謝。

+0

我認爲這是因爲malloc和free是昂貴的(分別在堆中創建和銷燬對象),所以它是防止堆抖動 – 2012-07-12 21:29:11

回答

2

這不是模型中的數據量。關於創建單元格視圖所用的內存量更是如此。如果我有一張桌子可以創建超過1000個對象,那麼爲什麼只有在屏幕上出現大約十幾個對象時纔會創建它們?不要只考慮所保存和顯示的數據,考慮顯示數據的對象(UITableViewCell)中佔用的內存。

1

這只是很好的內存管理。沒有人知道桌子有多大,比對不起更安全。你只需要記憶,因爲視野中有很多細胞。

+0

但是填充該巨大表的數據無論如何都被緩存。單元格(格式)只是彼此的副本。所以這並不能解釋它。 – inorganik 2012-07-12 21:31:57

+0

我不認爲UITableView會執行任何緩存(如果您使用計算開銷很大的單元,比如大圖像,您可以注意到單元即將出現時的延遲),而對於數據源,則完全取決於您。另外創建複雜的視圖層次結構可能會很昂貴,因此重用現有視圖可能是一個好主意。 – Guillaume 2012-07-12 21:50:31

相關問題