4

我在我的项目中混合了代码,两者都应用了 ARC 的编码风格,有些则没有。然后我遇到了一个设置一些符号或标志的解决方案:-fno-objc-arc

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

4

2 回答 2

7

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

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

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

于 2012-07-04T11:12:36.830 回答
0

ARC 代表自动引用计数。以下是从 Apple Developer 网站获取的一些信息:

自动引用计数

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

在编译旧的、不兼容的代码时禁用 ARC 是很常见的。

于 2012-07-04T10:23:17.420 回答