这些符号(-fno-objc-arc)是什么意思?

我在我的项目中混淆了代码,既适用于ARC的编码风格,也有一些不适用。 然后我遇到了设置一些符号或标志的解决方案:-fno-objc-arc

我的问题是,这些旗帜是什么? 这些符号是什么意思-fno-objc-arc? 还有更多吗?

-fno-objc-arc标志用于编译器 ,而不是链接器 。 它告诉编译器您的Objective C代码将手动执行所有释放和保留。 这是必要的,因为新添加的ARC模式禁止显式使用retainreleaseautoreleasedealloc等 ; 即使通过选择器也无法调用它们。

将所有代码转换为ARC可能是一项大任务,因此编译器支持旧样式和新样式。 您必须告诉编译器您正在编译的文件是旧的还是新的; 你通过传递-fno-objc-arc标志来做到这一点。

还有许多其他编译器标志。 它们允许您控制代码编译和优化的方式,向您报告错误和警告的方式,标题所在的路径等等。 在终端窗口中键入man gcc以查看编译器选项列表。

ARC代表自动参考计数。 以下是Apple开发者网站提供的一些信息:

自动参考计数

Objective-C的自动引用计数(ARC)使内存管理成为编译器的工作。 通过使用Apple LLVM编译器启用ARC,您将永远不需要再次键入retain或release,从而大大简化了开发过程,同时减少了崩溃和内存泄漏。 编译器完全了解您的对象,并在不再使用它的瞬间释放每个对象,因此应用程序运行速度与以往一样快,具有可预测的平滑性能。

在编译较旧的,不符合规范的代码时,禁用ARC是很常见的。