iphone - 使用 ARC 时何时将对象设置为 nil?

标签 iphone memory automatic-ref-counting allocation viewdidunload

我正在使用 ARC 进行 iPhone 项目。该应用程序是一个基于导航的应用程序,使用UINavigationController

典型的用例是多次从“主”UIViewController 转到“次要”UIViewController,可能最多 100 次。辅助 Controller 有很多静态的本地 PNG 图像,其中一些是重复的。

我正在分析应用程序,我可以看到,当从“主” Controller 转到“辅助” Controller 时,它如何分配大约 0.8 MB,但是当按下后退按钮时,它不会释放内存。因此,当我再次转到辅助 Controller 时,会分配其他 0.8 MB,依此类推...

调试时,我注意到辅助 UIViewControllerviewDidUnload: 方法从未被调用,但我也读到,这就是我应该设置为的方法nil Controller 保存的引用。在 viewDidDisappear: 中这样做并没有帮助,因为我希望仅在按下后退按钮时发生这种情况,即从堆栈中弹出 Controller 时(viewDidDisappear:当将另一个 Controller 压入堆栈时也会调用该方法)。

所以问题是:我必须在哪里这样做吗?我可以强制调用该方法吗?这种行为是否正常(分析,在“主”->“次要”->“主”->“次要”-> ... 的一些循环后,分配量达到 20MB)? ??

先谢谢大家了

最佳答案

ARC只是用来减少代码和内部管理内存。 有关更多详细信息,请阅读下面的教程,以便您能够更轻松地理解这些概念。

Understanding Automatic Reference Counting in Objective-C

希望这对您有所帮助。

关于iphone - 使用 ARC 时何时将对象设置为 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10699491/

相关文章:

python - 如何在不将整个文件读入内存的情况下在python3.2中以相反的顺序读取文件?

objective-c - 为什么ARC转换将 "weak"装饰器添加到 "readonly"属性?

ios - 自定义分段控件宽度代码没有故意工作

ios - UITableViewCell 仅在滚动时加载内容

iphone - Objective C 颜色编码?

iphone - 如何转储存储在 Objective-C 对象(NSArray 或 NSDictionary)中的数据

c - 重新分配 : Segmentation fault

java - 将对象的 ArrayList 拆分为大小相等的 block ,例如在 Java 中为 1 MB

Python C API,新对象的高引用计数

ios - 从核心数据列表中删除 NSEntityDescription 对象