创建了新的iOS项目后,我启用了ARC,并且不打算支持iOS 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进行的项目中编译的文件中) ),则编译后的类可以覆盖其核心内容的保留/释放/自动释放。

关于ios - 在启用ARC的情况下可以使用保留/释放的情况,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17259193/

10-14 21:34