如果我决定升级到 iOS 5,是否需要从我的代码中删除所有 [myObject retain] 和 [myObject release] 语句?
是的,但是 XCode 4.2 包含一个新的“迁移到 Objective-C ARC”工具(在 Edit->Refactor 菜单中),它可以为您完成这项工作。调用 dealloc 是另一回事。正如评论中提到的,clang 参考声明你应该保留你的 dealloc 方法:
理由:即使 ARC 自动销毁实例变量,仍然有正当理由编写 dealloc 方法,例如释放不可保留的资源。在这种方法中未能调用 [super dealloc] 几乎总是一个错误。
您可以使用新的 -fobjc-arc 编译器标志启用 ARC。Xcode 4.2 支持 Mac OS X v10.6 和 v10.7(64 位应用程序)以及 iOS 4 和 iOS 5。(Mac OS X v10.6 和 iOS 4 不支持弱引用)。Xcode 4.1 中没有 ARC 支持。
-
如果我使用 ARC 为 iOS 5 开发新应用程序,我是否需要实施某种“复古兼容性”检查?即:我需要检查iOS的版本并相应地调用retain和release吗?那么,基本上,ARC 是适用于所有 iOS 版本还是仅适用于 iOS 5?
不,因为 ARC 在编译时而不是在运行时发挥其魔力。
您不必记住何时使用保留、释放和自动释放,ARC 会评估对象的生命周期要求并在编译时自动为您插入适当的方法调用。编译器还会为您生成适当的 dealloc 方法。
关于 ARC 的更多信息:http: //clang.llvm.org/docs/AutomaticReferenceCounting.html