0

如何在 ARC 下释放 Objective-C 中动态分配的内存?

dynamically我的意思是分配malloc给某些 ivar 的内存。

dealloc并且viewDidUnload不再被调用,至少在我的测试中。

那么当不再需要视图控制器时,何时以及如何开始释放内存呢?

我所做的是创建一个名为Releasable(我从 C# 中偷来的想法)的协议,它具有单一方法-(void) release。当不再需要对象时,这将由一些外部代理调用。

4

1 回答 1

7

dealloc在 ARC 下仍然被称为。您只是没有明确调用[super dealloc]. 如果dealloc没有被调用,那么某些东西仍然具有对对象实例的引用。在您的项目上运行分析器,看看会发生什么。

viewDidUnload在 iOS 5 下仍然调用,但在 iOS 6 下不调用。

添加您的协议和您的release方法是完全没有必要的。

于 2013-04-22T20:22:37.303 回答