禁用某些文件的自动引用计数

non*_*ive 183 objective-c ios5 automatic-ref-counting

我已经下载了iOS 5 SDK,发现ARC是新Apple编译器的一个很棒的功能.目前,许多第三方框架不支持ARC.我可以将ARC用于我的新代码并保持当前的保留/释放代码不变吗?ARC转换器在这里不起作用,因为某些框架(例如JSONKit)无法使用转换器转换为ARC.

编辑:

答案是为-fno-objc-arc不希望ARC的文件添加编译器标志.在Xcode 4中,您可以在目标 - > Build Phases - > Compile Sources下执行此操作.

Tib*_*abo 78

如何在MULTIPLE文件上禁用ARC并不是很直观,有一段时间我一个接一个地做这个,直到弄清楚如何做到这一点.

  1. 在Xcode中的目标/构建阶段/编译源中选择所需的文件(CMD +单击或Shift +单击)
  2. 按ENTER键(双击将重置选择,因此不起作用)
  3. 键入-fno-objc-arc
  4. 按Enter或完成


Pet*_*sey 73

公共ARC文档虽然在这一点上并未直接明确,但似乎暗示只要每个类都是ARC或全部是手动管理的,这些类就可以集成到一个程序中.

你只能在一个班级中混合使用ARC和非ARC; 的文件说,发送retain,release,autorelease,或retainCount通过任何手段(包括计时器和延迟进行,其使用消息@selector)在ARC代码禁止.因此,您不能在ARC类中执行非ARC(因为必需的消息被禁止),并且您不能在非ARC类中执行ARC(因为ARC添加的语法元素在没有ARC的情况下无效).

关于是否可以将非ARC库/框架集成到ARC程序中,同样的文档更清楚:是的.它没有提到你是否可以在所有代码都是非ARC的程序中使用ARC库/框架,但鉴于上述所有内容,其含义似乎是肯定的.


Nik*_*sal 35

如果你想为某些文件禁用自动引用计数,那么按照步骤操作非常简单.你可以在Targets - > Build Phases - > Compile Sources中添加编译器标志.

Xcode中

使用的标志是-fno-objc-arc写入后按Enter键.您必须双击Compiler Flags下行的右列.希望它有帮助谢谢:)

  • 您可以使用相同的方法,通过使用标志`-fobjc-arc`在非ARC项目中的特定文件上启用**ARC. (14认同)