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

时间:2012-07-04 10:17:02

标签: objective-c ios xcode

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

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

2 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:0)

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

  

自动参考计数

     

自动参考计数(ARC)   Objective-C使内存管理成为编译器的工作。通过   使用Apple LLVM编译器启用ARC,您将永远不需要键入   保留或再次发布,大大简化了开发   进程,同时减少崩溃和内存泄漏。编译器有一个   完全理解你的对象,并释放每个对象   即时它不再使用,所以应用程序运行速度与以往一样快   可预测,流畅的表现。

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