繁体   English   中英

在启用ARC的情况下使用保留/释放的情况是什么?

[英]What are the cases to use retain/release having ARC enabled

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

有人可以请列出这些情况,谢谢!

您应该阅读Apple的迁移指南。 有一些警告。 但是,除非您直接使用Core Foundation或使用-fno-objc-arc专门标记单个文件并拥有所有权为该文件释放内存,否则您不必使用retain/release自己的情况只要。

您将永远不需要使用保留/释放/自动释放。 启用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编译的任何文件中) 'd项目),则编译后的类可以覆盖其核心内容的保留/释放/自动释放。

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

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

ARC是Automatic Reference Counting 启用后,SDK会自行决定何时释放对象。 用户只需要分配它。 用户仍然可以管理编号的分配。 通过声明对对象的strong引用或weak引用来确定对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM