2011-11-29 47 views
1

是否存在與我在表格視圖中顯示的列表中的項目數量有關的內存問題?如果用戶不斷添加項目,應用程序最終會崩潰還是由於內存問題?內存限制爲表格視圖中的項目數量

+0

小的評論...它不是一個Objective-C表視圖。 Objective-C只是蘋果爲他們的工作選擇的語言(部分原因是NeXT選擇了它)。它是一個NSTableView,它是NeXTStep框架的一部分。 (我認爲)。 – Almo

+0

我的不好,我對開發很陌生,我修正了它 – user1051935

+3

@Almo在iOS中,它是一個UITableView,它是UIKit框架的一部分,但同樣的區別。 – 2011-11-29 22:39:13

回答

1

回答您的問題:

  1. 有沒有黑色和白色的答案。爲了盡我所能解釋,將UITableView看作有點像可視化數據數組。實際上,大多數人(包括我自己)都使用NSArray或NSDictionary等源數據對象來爲UITableView提供顯示數據。所有適用於這些對象(數組和字典)的內存限制都適用於您的UITableView,假設您的UITableView設置正確並且使用推薦的技術來重用單元。這可以歸結爲:是否有可能有一個非常大的UITableView? - 是的。多久,但我不知道。我創建了具有複雜子類的單元格和200行的UITableViews,它們工作正常。這取決於您如何設置表格和您使用的數據源。請再次牢記,限制是由於數據源造成的。有一個非常大的陣列,最終你的設備會拋出一個內存警告。作爲最佳做法,請使用分頁。有大量的在線教程可以在UITableViews上進行分頁。如果正在下載,請延遲加載圖像(如果有)。

  2. 是的,你可以。如果在創建UITableViewCells的子類時足夠有創意,您可以做許多令人驚歎的事情。否則,你也可以使用標準的UITableViewCell。那裏有兩個標籤:textLabel和detailTextLabel。使用這兩個來顯示你想要的數據。

  3. 你的UITableViewDelegate有一個你可以實現的didSelectRowAtIndexPath方法。只要你的視圖控制器容納UITableView被設置爲委託,它將響應didSelectRowAtIndexPath。

  4. 只是一句你使用的(請記住:你的numberOfRowsInSection數據源的方法必須使用數組數)數據源的陣列,並調用reloadData上的UITableView

編輯:問題所以只有從上面4​​點的第1點適用於這個問題:)其他人很高興知道雖然

0

沒有表特定的,但是,你會用完。

最重要的可能是在tableView:cellForRowAtIndexPath:委託方法中使用dequeueReusableCellWithIdentifier:。這基本上將內存使用量減少到可見單元的數量(加上一個滾動到視圖中)。