How do you enable ARC project-wide in Xcode 4.2

IosXcodeXcode4Ios4

Ios Problem Overview


I have an iOS app that I want to convert to using ARC. I would just use the migration tool, but it errors out for me consistently during the preview phase.

I know I can use the -fobjc-arc compiler directive on a file-by-file basis, but I want to enable ARC on the entire project, then turn off individual classes using -fno-objc-arc.

New projects in 4.2 can use ARC by default, so there must be a switch somewhere.

Can anyone help me to convert the project to ARC

Ios Solutions


Solution 1 - Ios

> "ARC is available in Xcode 4.2, currently in beta, and only when > compiling with Clang (a.k.a. "Apple LLVM compiler"). The setting is > called, obviously enough, "Objective-C Automatic Reference Counting". > Turn it on, and off you go. > > If you're working on existing code, changing this setting will produce > an enormous quantity of errors. ARC not only manages memory for you, > but it forbids you from trying to do it yourself. It's illegal to > manually send retain/release/autorelease when using ARC. Since normal > non-ARC Cocoa code is littered with this stuff, you'll get a lot of > errors. > > Fortunately, Xcode offers a tool to convert existing code. Select Edit > -> Refactor... -> Convert to Objective-C ARC... and Xcode will guide you through converting your code. Although there may be some > situations where it needs help figuring out what to do, the process > should be largely automatic."

I took that from this link, helped me a lot: http://www.mikeash.com/pyblog/friday-qa-2011-09-30-automatic-reference-counting.html

Solution 2 - Ios

Select your project or target and then go to Build Settings and under the section Apple LLVM compiler 3.0 - Language you will see the option Objective-C Automatic Reference Counting.

Solution 3 - Ios

For towpse, in Xcode 4.6 you will need to look for "CLANG_ENABLE_OBJC_ARC" and then change it to "Yes" to enable.

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
QuestionAlpinistaView Question on Stackoverflow
Solution 1 - IosRyanGView Answer on Stackoverflow
Solution 2 - Iosuser263865View Answer on Stackoverflow
Solution 3 - IosJoel BView Answer on Stackoverflow