gpt4 book ai didi

ios - UINavigationController pushviewcontroller 内存管理

转载 作者:行者123 更新时间:2023-12-01 17:55:42 25 4
gpt4 key购买 nike

我有一个 UITableiew 列出 n 个联系人,并且从 TableView 委托(delegate) didSelectRowAtIndexPath 我正在使用 导航到“Contactview”UIViewController UINavigationController pushviewcontroller .

例如,如果我将第一个联系人导航到 Contactview,Live Bytes 内存将从 上升。 1 MB 到 3 MB .然后当我点击返回按钮时, View Controller 德尔洛克方法被调用,但内存仍然停留在 2.95MB 到 3MB .我的问题是当 View Controller 德尔洛克方法叫做viewcontoller的内存应该被释放吧?我在哪里错了吗?如果我错了,请建议我。我正在使用 ARC 项目。

提前致谢..

最佳答案

如果你来回插入你的导航并且你看到内存无限制地攀升,那么你有一个内存管理问题。 即使使用 ARC ,你可能已经放弃了内存。您可以使用 Instruments 中的分配模板来检测它。

  • 在 Instruments 中,将应用程序置于众所周知的启动状态(例如,显示表格 View )。
  • 点击马克堆 Heapshot Analysis 下的按钮。
  • 来回导航您的 Controller 一次。
  • 您将在分配图中看到内存使用量的小幅增加。这是正常的,内部缓存可能正在存储一些信息。
  • 点击马克堆 按钮。
  • 您将在 中看到许多对象。还活着柱子。
  • 多次重复步骤 3-6 并查看每次迭代后是否有“仍然存在”的对象。

  • 如果每个 heapshot 中有几乎恒定数量的仍然存在的对象,请单击其中一个 heapshot 中的右箭头按钮,您将看到所有仍然存在的对象。查找可能由您创建的对象,选择一个,展开它,然后单击一下即可选择其内存地址。然后点击 扩展细节按钮查看显示对象分配位置的堆栈跟踪。有了这个代码上下文,我相信你会明白为什么你的内存被遗弃了。

    关于ios - UINavigationController pushviewcontroller 内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18077310/

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