不同的内存管理ARC /无ARC

时间:2011-09-09 20:46:32

标签: iphone memory-management automatic-ref-counting

我必须将简单的ARC代码转换为非ARC。虽然它相对简单,但我错过了一个实例变量赋值self.var = xxx,而是写了var = xxx。

虽然在ARC版本中它没有造成任何麻烦 - 在非ARC版本中它肯定会导致崩溃。

这是否意味着在没有self的情况下在ARC中分配实例变量实际上是可以的。所以他们得到保留?

谢谢!

ps什么是学习如何在ARC中编程的最佳来源,以避免出现明显的错误 - 到目前为止,我没有发现任何问题,但我感到紧张,我可能错过了什么

2 个答案:

答案 0 :(得分:1)

  

这是否意味着在没有self的情况下在ARC中分配实例变量实际上是可以的。所以他们得到保留?

是的,有点。

id obj_;

与此相同。

id __strong obj_;

obj_对指定的对象有强大的参考。在取消分配ivar的所有者对象之前,不会解除分配的对象。

请参阅LLVM document或仍在NDA下的Apple的ARC参考资料。

答案 1 :(得分:0)

enter image description here

enter image description here

自动引用计数禁止'dealloc'的显式消息发送

我已经分享了在新的iOS5 SDK中启用旧库编译的技巧。

点击项目。

点击目标。

选择构建阶段标签。

选择要关闭ARC的多个文件。

按ENTER /按Enter键

键入“-fno-objc-arc”(不带引号,如图所示)