【问题标题】:Release UIViewController ARC (using the linking method (no programming)to relate views)释放 UIViewController ARC(使用链接方式(无需编程)关联视图)
【发布时间】:2013-10-10 16:56:09
【问题描述】:

我已经搜索了很多关于这个问题但我没有找到任何东西,希望有人这样做,这是我的问题:

ve tested the app in the simulator a lot of times. I have ARC and all the outlets released in the viewDidUnload (Ive 有很多图片)。当我在模拟器上运行它时,在视图之间切换时,内存会一次又一次地上升。

例如,我在视图中有一个按钮。右键单击它,我将它拖到另一个视图,将它们连接起来。我是否需要以这种方式发布与视图相关的任何内容?如果是这样,我把代码放在哪里? (每个视图我都有一个 .h 和 .m )。我已经阅读了很多这样的问题,但所有这些问题都引用了代码相关的视图,而不是使用拖动选项 (样式 - 模态)

如果有任何线索或帮助,我将不胜感激,因为我必须在短时间内解决这个问题,

提前致谢:)

【问题讨论】:

    标签: ios objective-c uiviewcontroller automatic-ref-counting release


    【解决方案1】:

    viewDidUnload 从 iOS6 开始不再被调用。这或许可以解释正在发生的事情。

    当控制器的视图从内存中释放时调用。 (在 iOS 6.0 中已弃用。在内存不足的情况下不再清除视图,因此永远不会调用此方法。)

    此外,viewDidUnload 通常在视图因内存压力而被卸载时被调用,因此无论如何您都应该从您的 dealloc 方法中调用它。

    尝试在deallocviewDidDisappear 中进行你的niling。

    您还应该知道,如果您使用UIImage's imageNamed 加载图像,此方法将缓存图像。因此,即使您将它们从视图中删除,它们也会保留在系统的缓存中。

    没有看到你的代码,就不能说更多了。

    【讨论】:

    • 没有代码就不太容易回答。你可以在你的班级中定义dealloc(无需调用[super dealloc]);但我想在您的情况下,最好在 viewDidDisappear 中执行 nil-ing(否则我不知道您为什么首先在 viewDidUnload 中执行此操作)。关于缓存,你唯一能做的就是使用imageWithContentsOfFile: 而不是imageNamed。但是当内存不足时,有可能在设备上清空缓存。几年前有一个错误,这不是真的,我现在不知道。
    • 我查看了您的文件,但不清楚问题出在哪里。另一方面,您说“在视图之间更改时”内存会增长-您如何在视图之间进行更改?你如何使用你的 desayuno 课程?您是否也介意在设备上进行测试,因为如果内存永远不会变短,iOS 将不会尝试恢复它...
    • 我不使用任何代码在视图之间进行更改,我只是在 .storyboard 中右键单击一个按钮并将其拖动到另一个视图(Action segue_modal)。我已经在不同的目标上进行了测试,并且由于内存较少,情况最糟糕
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多