如何在 ARC 下的 Objective-C 中释放动态分配的内存?
通过动态
我的意思是用malloc
分配给一些ivar的内存。
dealloc
和 viewDidUnload
不再被调用,至少在我的测试中是这样。
那么当不再需要 View Controller 时,何时以及如何开始释放内存?
我所做的是创建名为 Releasable
的协议(protocol)(这是我从 C# 中窃取的想法),它具有单一方法 -(void) release
。
当不再需要对象时,一些外部代理会调用它。
最佳答案
dealloc
仍然在ARC下被调用。您只是没有显式调用 [super dealloc]
。如果 dealloc
没有被调用,那么某些东西仍然有对对象实例的引用。在您的项目上运行分析器,看看会发生什么。
viewDidUnload
仍会在 iOS 5 下调用,但不会在 iOS 6 下调用。
完全不需要添加协议(protocol)和release
方法。
关于iOS 5 和 6 在 ARC 下释放 malloc-ed 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16155975/