我的项目中的代码混合了应用ARC的编码风格而有些则没有。然后我遇到了设置一些符号或标志的解决方案:-fno-objc-arc
我的问题是,这些旗帜是什么?这些符号是什么意思-fno-objc-arc?还有更多这些吗?
答案 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。