2012-05-25 71 views
0

我正在構建一個iPhone應用程序。在數據庫中我有5000條記錄。其中我只在應用程序中顯示50。但是我想問一下,如果我在iPhone視圖中最初創建5000個空單元,即使我顯示50行數據,是否還會有內存問題?iPhone應用內存相關查詢

回答

1

如果您正確構建表格,則只能使用少數幾個實際的UITableViewCell對象,這些對象會隨着屏幕上的顯示而不斷回收。

即使是50也是安全的。

在具有50個UITableViewCell的內存中有5000個數據對象應該是可以接受的。

尤其是,如果這些數據對象很小,或者您允許CoreData爲您管理數據集,那麼可以爲您做一些工作。

重要的是不要讓5000表細胞視圖。這是非常糟糕的做法。

1

一件事,你會迅速與canonical way of handling tables學習是模型的大小無關(即,要創建的行數),僅排一小撮實際創建,因此內存佔用量仍然很低。從本質上講,UITableView最初創建並呈現一行屏幕(加上一些更好的度量)。當你開始向下滾動時,控制器認識到它需要繪製一個新行。但是,它也意識到表格頂部的行從視圖中消失了。因此,不是創建一個全新的單元格,而是簡單地將其中一個單元格放在視圖中,並用新信息重新配置它。無論表中有多少行,只有少數幾個單元存儲在內存中。

因此,在您的情況下,內存瓶頸將可能是饋送單元配置的模型。如果您一次將所有5000行加載到內存中,那麼速度可能會很慢並且會佔用內存。但是手邊有幫助:你從桌面控制器得到一個提示,基本上告訴你它想要設置第* n *行。因此,您的模型實際上可以更有針對性,只需加載所需的數據。例如,由於您知道第15行正在渲染,因此請從數據庫中抓取第15行,而不是預先將整個模型預先加載。

這是我用來創建超過5000行而不需要分頁的應用程序的方法。當然,這取決於你的數據集關於你的用戶如何導航。