我在我的项目中有些代码应用了ARC编码风格,而有些则没有。后来我发现有一种解决方法,可以设置一些符号或标记:-fno-objc-arc。
我的问题是,这些标记是什么?这些符号-fno-objc-arc代表什么意思?还有其他类似的吗?
我在我的项目中有些代码应用了ARC编码风格,而有些则没有。后来我发现有一种解决方法,可以设置一些符号或标记:-fno-objc-arc。
我的问题是,这些标记是什么?这些符号-fno-objc-arc代表什么意思?还有其他类似的吗?
-fno-objc-arc
标志是给编译器使用的,而不是链接器。它告诉编译器,你的 Objective C 代码将会手动进行释放和保留。这是必要的,因为新添加的 ARC 模式禁止显式使用 retain
, release
, autorelease
, dealloc
等等;即使通过选择器也无法调用它们。-fno-objc-arc
标志来实现。man gcc
来查看编译器选项列表。ARC代表自动引用计数。以下是从苹果开发者网站摘取的一些信息:
自动引用计数
Objective-C的自动引用计数(ARC)使内存管理成为编译器的工作。通过使用Apple LLVM编译器启用ARC,您将永远不需要再键入retain或release,从而大大简化了开发过程,同时减少了崩溃和内存泄漏。编译器完全了解您的对象,并在每个对象不再使用时立即释放它,因此应用程序运行速度与以往一样快,性能可预测、平稳。
在编译旧的、不符合规范的代码时,禁用ARC是相当常见的。