0

创建了一个新的 iOS 项目后,我启用了 ARC 并且不打算支持 iOS < 5.0。这是否意味着我永远不需要retain/release使用它们,或者在某些情况下可能需要使用它们?

如果有的话,请列出这些案例,谢谢!

4

3 回答 3

4

您应该阅读 Apple 的迁移指南。有一些注意事项。但是,没有任何情况下您必须retain/release自己使用,除非您直接使用 Core Foundation,或者您专门标记单个文件-fno-objc-arc并拥有自己为该文件释放内存的所有权。

于 2013-06-23T09:12:09.743 回答
0

No, you don't need to use them as ARC is enabled.

保留/释放是分别用于保留和释放对对象的引用的方法。它用于管理内存分配和释放。用户必须自己管理内存,仅当 ARC 未启用或不可用时,如 iOS 4.3 以下。

弧是Automatic Reference Counting。启用后,SDK 自己决定何时释放对象。用户只需要分配它。用户仍然可以管理编号的分配。通过声明对对象的 astrongweak引用来定义对象。

于 2013-06-23T09:21:58.927 回答
0

你永远不需要使用保留/释放/自动释放。启用 ARC 后,您无需编写内存管理代码,除非您正在使用 Core Foundation - ARC 不关心 Core Foundation 对象。但是,您可以使用 __bridge_transfer 强制转换(或 CFBridgingRelease)让 ARC 为您释放 CF 对象。如果您从 Cocoa 或 Cocoa Touch 函数或方法中获取它,则它位于 Objective-C 领域,因此由 ARC 管理。您可以使用 __bridge_retained 演员(或 CFBridgingRetain)将其传输到 CF 世界,之后您必须 CFRelease(或将其传输回 ARC)。是的,只要类是在没有 ARC 的情况下编译的(您可以逐个文件控制它;转到构建阶段并添加-fno-objc-arc作为应该在其他 ARC 项目中编译的任何文件的标志),然后编译的类可以覆盖保留/释放/自动释放到他们的核心内容。

于 2013-06-23T09:10:48.037 回答