【发布时间】:2012-02-08 10:29:37
【问题描述】:
我正在开发一个开启 arc 的 iPad 应用程序。 但我现在正在使用一个没有弧的小框架。我设置了标志 -fno_objc_arc 等等。 但是还有一个问题: 框架内的一个对象持有对当前 viewController 的引用。 如果我离开当前的 ViewController,框架会释放控制器属性:
[viewController release];
对象被释放,一切似乎都很好。但仔细观察你会发现,所有实例变量仍然有效且存在。 假设我的 viewController 有两个实例变量到实例变量 - 一个数组和一个 subviewController。通常在 arc 中,如果主对象被释放,实例变量就会被释放。但是如果非 arc 框架发送 release 消息,似乎对象并没有释放它的实例变量,导致内存错误,因为它们没有在其他任何地方引用!
编辑:
这里是引用计数,表是释放的实例变量 视图控制器:
之前的控制器:1
之前的控制器实例表:1
现在 [viewController release] 已发送
之后的控制器:0
之后的控制器实例表:1
对这个问题有什么建议吗?我将不胜感激!
【问题讨论】:
标签: objective-c ios automatic-ref-counting release-management