【问题标题】:push and pop increase live bytespush 和 pop 增加活动字节数
【发布时间】:2011-08-26 20:13:44
【问题描述】:

作为测试,我一次又一次地推送和弹出相同的视图...我将转到下一个屏幕并一遍又一遍地单击返回...我可以看到实时字节不断增加...

虽然我在应用程序的其他地方来回显示表格视图的 2 个屏幕之间,但活动字节增加和减少的数量相同(第一次执行)。

那么我需要检查什么以了解发生了什么...玩 20 分钟后,应用程序通常会崩溃 - 请注意,任何时候都没有内存泄漏。

在我推送和弹出的这些第一个视图中,第二个屏幕有一个图片和一个文本字段。我需要对这些特别的东西吗? 我还注意到我没有默认功能 viewWillDisappear 和 viewDidDisappear... 我需要这些吗?它们是强制性的吗?添加它们并没有改变任何东西......所以我需要在它们中添加一些特别的东西......

非常感谢任何帮助

干杯, 呸呸呸

【问题讨论】:

    标签: iphone uiviewcontroller byte live


    【解决方案1】:

    【讨论】:

    • 非常棒的文章来解释如何使用它。爱它。谢谢
    【解决方案2】:

    您可以使用 Instruments 的 Heapshot Analysis 准确了解一段时间内的变化。

    1) 使用分配模板的配置文件

    2) 运行应用程序(四处导航)

    3) 点击“标记堆”按钮

    4) 运行应用程序(四处导航)

    5) 点击“标记堆”按钮

    然后看看Heapshot Analysis的结果。

    当您的视图被卸载时,您应该将您的IBOutlets 归零,释放您可以轻松重构的部分,并释放可能被视为大分配的部分。

    【讨论】:

    • 感谢贾斯汀。我发现我没有释放视图控制器,因为我使用类名而不是实例名发布......没有崩溃,但这是增长的因素。谢谢
    【解决方案3】:

    在您正在推送和弹出的控制器的-dealloc 方法中放置一个断点,以查看它是否会触发。如果没有,您将在某处保留对它的引用。发生这种情况的原因有很多。以下是几种可能性:

    1. 前面的视图控制器可能会保留对后继者的引用。这是不必要的,应该避免(UINavigationController 将视图控制器保留在其堆栈中)。

    2. 您可能通过保留对保留视图控制器的对象的引用,在代码中引入了保留循环。如果您使用块并且不注意遵循内存管理规则,则很容易发生这种情况。

    如果你做的事情正确,你的视图控制器应该在它从导航控制器弹出后解除分配。

    【讨论】:

    • 感谢卡梅隆。我发现我没有释放视图控制器,因为我使用类名而不是实例名发布......没有崩溃,但这是增长的因素。谢谢
    猜你喜欢
    • 2013-03-29
    • 2013-04-20
    • 2014-01-30
    • 2014-06-22
    • 2011-11-23
    • 2013-10-11
    • 2022-01-17
    • 2016-08-16
    • 2018-04-17
    相关资源
    最近更新 更多