【发布时间】:2014-04-15 10:45:28
【问题描述】:
iOS 7.1
总结:当用户切换到新的表视图控制器时,系统分配了太多内存,这就是我需要某种可重用或单例表视图控制器的原因。
我有一个表格视图控制器(比如说垂直主页),它的单元格中有内部表格视图(水平)。如果我不需要创建水平表,我可以创建一个表并操作它的 cellForRowAtIndexPath 方法而不是创建一个内部表。
反正还有另一个功能;在最内部的单元格中有按钮,如果用户点击它,它会触发一个推送序列,该序列导航到另一个具有相同垂直和水平结构的表格视图控制器。用户很有可能会多次使用这些表格视图控制器。
监控应用内存使用情况时:
-
如果用户停留在主视图控制器并垂直滚动,系统会为每个具有内部表格视图的单元格分配大约 1 mb。 1 mb 是可以接受的,即使它实际上很棒。顺便提一句。我正在使用可重用单元来通过这些代码行减少内存使用量:
[tableView registerNib: customCellNib forCellReuseIdentifier:HorizontalContainerTableCellIdentifier]; cell = (HorizontalContainerTableCell *) [tableView dequeueReusableCellWithIdentifier:HorizontalContainerTableCellIdentifier]; 如果用户触发了 segue;创建了一个新的表视图控制器as desribed as here.,即使用户不滚动系统也会为每个表视图控制器分配大约 5 mb。
这意味着为每个 segue 创建一个新的视图控制器的成本太高了。我可以接受我的视图层次结构不是轻量级的,但是如果用户垂直滚动系统可以在第一个使用场景中看到它正在重新使用预先创建的单元格并且内存成本并不多。
那么我应该走哪条路?我是否需要子类化 segue 并将它们重定向到预初始化的视图控制器并更新它的表 (like this)?通过这种方式,我可以强制系统重用单元格。还是一切正常,是应该的样子?
【问题讨论】:
标签: ios objective-c uitableview