Disable Automatic Reference Counting for Some Files

Objective CIos5Automatic Ref-Counting

Objective C Problem Overview


I have downloaded the iOS 5 SDK and found that ARC is a great feature of the new Apple compiler. For the time being, many third party frameworks don't support ARC. Could I use ARC for my new code and keep the current retain/release code unchanged? The ARC converter doesn't work here, because some frameworks, such as JSONKit, cannot be converted to ARC by using the converter.

Edit:

The answer is to add -fno-objc-arc to the compiler flags for the files you don't want ARC. In Xcode 4, you can do this under your target -> Build Phases -> Compile Sources.

Objective C Solutions


Solution 1 - Objective C

It is not very intuitive how to disable ARC on MULTIPLE files, for a while I was do it one by one until a figured out how to do that.

  1. Select desired files at Target/Build Phases/Compile Sources in Xcode (CMD+click or Shift+click)
  2. PRESS ENTER (double click will reset the selection, so it does't work)
  3. Type -fno-objc-arc
  4. Press Enter or Done

Solution 2 - Objective C

The public ARC docs, while not directly clear on this point, seem to suggest that as long as each class is either all ARC or all manually-managed, the classes can be integrated into a single program.

You only can't mix ARC and non-ARC in a single class; the document says that sending retain, release, autorelease, or retainCount messages by any means (including timers and delayed performs, which use @selector) is banned in ARC code. So you can't do non-ARC in an ARC class (because the necessary messages are banned) and you can't do ARC in a non-ARC class (because ARC adds syntax elements that are invalid without ARC).

The same document is a bit clearer on whether you can integrate non-ARC libraries/frameworks into an ARC program: Yes. It doesn't mention whether you can use ARC libraries/frameworks in a program where all your code is non-ARC, but given all of the above, the implication seems to be yes.

Solution 3 - Objective C

If you want to disable Automatic Reference Counting for some Files then its really simple to do just follow the steps.You add compiler flags in Targets -> Build Phases -> Compile Sources.

xcode

The flag used is -fno-objc-arc press enter after writing it.! You have to double click on the right column of the row under Compiler Flags. Hope it helps Thanks :)

Solution 4 - Objective C

It is possible to disable ARC for individual files by adding the -fno-objc-arc compiler flag for those files.

https://stackoverflow.com/questions/6646052/how-can-i-disable-arc-for-a-single-file-in-a-project

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionnonameliveView Question on Stackoverflow
Solution 1 - Objective CTibidaboView Answer on Stackoverflow
Solution 2 - Objective CPeter HoseyView Answer on Stackoverflow
Solution 3 - Objective CNikhil BansalView Answer on Stackoverflow
Solution 4 - Objective CNaveenView Answer on Stackoverflow