gpt4 book ai didi

iOS 需要可重用的 TableView Controller

转载 作者:行者123 更新时间:2023-11-29 03:03:09 25 4
gpt4 key购买 nike

ios 7.1

总结:当用户切换到新的 TableView Controller 时,系统分配了太多内存,这就是我需要某种可重用或单例 TableView Controller 的原因。


我有一个 TableView Controller (比如说垂直主页),它的单元格内部有内部 TableView (水平)。如果我不需要创建水平表,我可以创建一个表并操纵它的 cellForRowAtIndexPath 方法,而不是创建一个内部表。

无论如何,还有另一个功能;在最内部的单元格中有按钮,如果用户点击它,它会触发一个推送 segue,导航到另一个具有相同垂直和水平结构的 TableView Controller 。用户很可能会多次使用这些 TableView Controller 。

监控应用程序的内存使用情况时:

  1. 如果用户停留在主视图 Controller 并垂直滚动,系统会为每个具有内 TableView 的单元格多分配大约 1 MB。 1 mb 是可以接受的,即使它实际上已经很大了。顺便提一句。我正在使用可重复使用的单元格,以便能够通过这些代码行减少内存使用量:

    [tableView registerNib: customCellNib forCellReuseIdentifier:HorizontalContainerTableCellIdentifier];
    cell = (HorizontalContainerTableCell *) [tableView dequeueReusableCellWithIdentifier:HorizontalContainerTableCellIdentifier];
  2. 如果用户触发segue;创建了一个新的 TableView Controller as desribed as here.即使用户不滚动,系统也会为每个 TableView Controller 分配大约 5 MB。

这意味着为每个 segue 创建一个新的 View Controller 的成本太大了。我可以接受我的 View 层次结构不是轻量级的,但在第一个使用场景中可以看出,如果用户垂直滚动,系统会重新使用预先创建的单元格,并且内存成本不会那么高。

那么我应该走哪条路呢?我是否需要将 segues 子类化并将它们重定向到预初始化的 View Controller 并更新它的表(like this)?通过这种方式,我可以强制系统重用单元格。还是一切正常,一切都应该如此吗?

最佳答案

如果你segue viewController,旧的viewController将被插入导航堆栈,并且新的viewController将被创建并插入堆栈。我认为您可以通过在 viewWillDisappear 中释放 tableView 数据并在 viewWillAppear 上重新加载它们来减少使用。只需触发 reloadData 并在 numberOfRowsInSection 中返回 0 即可释放 tableView 使用的内存。

关于iOS 需要可重用的 TableView Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23081407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com