2011-11-02 54 views
0

在iOS5 sdk中,编译器将负责内存管理(ARC)。假设我已经使用iOS 4.2构建了我的应用程序并手动完成了所有相关的工作。现在,如果我要在iOS 5上运行该应用程序,编译器会再次尝试插入它自己的内存管理吗?在这种情况下,它会不会坠毁?iOS 5上的自动引用计数(ARC)

+0

您是否试图在iOS 5.0中运行它?那么发生了什么? – Krishnabhadra

+0

@Krishnabhadra我在xcode3.2.5/iOS4.2上编写了代码,然后尝试使用xcode4/iOS5.0运行它,结果崩溃了。 – anshul

回答

1

当您使用iOS 5.0 SDK开始新项目时,您现在可以选择打开/关闭ARC ..如果您正在运行使用pre iOS 5.0版本设计的现有项目,ARC将自动禁用。过渡到ARC时,苹果的documentation

3

不需要。您必须决定使用ARC。 (编辑>重构>转换为ARC)。如果你不使用ARC,编译器将不会插入内存管理代码。

1

当启用ARC时,不允许调用-retain,-release和-dealloc,因此您所描述的双重释放情况不会发生。请参阅相关问题的答案:Under automatic reference counting, why are retain, release, and dealloc not allowed?

+0

那不能回答这个问题吗? – dasdom

+0

等一下,你的意思是realloc还是dealloc?主要区别在于... –

+0

更正的错字:将“-realloc”更改为“-dealloc”,谢谢@ richard-j-ross-iii –