Review: JetBrains AppCode for Objective C

I have been trying out JetBrains AppCode, a new IDE for Apple’s Objective C. The company is best known for its IntelliJ IDE for Java, and AppCode essentially takes the same core IDE and reworks it for Objective C. AppCode is itself a Java application, but unless you have a religious objection to this I doubt you will find it a problem: I found it perfectly snappy and responsive on my machine, a 2.3 Ghz Core i5 with 8GB RAM.

Installation was a snap, as Mac users expect.


One thing I discovered immediately is that AppCode is not a replacement for Xcode, the official Apple IDE. The Apple SDKs are delivered with Xcode, and AppCode requires it. An AppCode project is also an Xcode project.


This is particularly important if you want to use Interface Builder, the Xcode visual designer, since AppCode has no equivalent. Double-click the .xib file and it opens in Xcode. This is a disorientating at first, but in practice I found it convenient to be able to switch between the two IDEs.

So why bother with AppCode, when Xcode is free? It is certainly not essential, but my view is that tools which save time or improve quality are worth the investment. Whether AppCode will do this for you will depend on how you work and whether you have any frustrations with Xcode, which improved considerably in version 4. Out of the box, Xcode has integrated Git or Subversion source code control, unit test integration, refactoring including Rename, Extract, and Encapsulate, the aforementioned Interface Builder, and a ton of other features. Sticking with Xcode is a safe choice.

That said, AppCode feels leaner and less cluttered than Xcode. It also has many additional productivity features in the editor. JetBrains’ IDEs are well known for refactoring, and while AppCode is not as rich as IntelliJ IDEA in this respect, it does have a more than Xcode.

Another strong feature is code generation. Press Command + n in the editor, and a context-sensitive Generate menu offers various time-saving options. I like the way I can type a new method in an implementation file, press Alt + Enter, and select Declare method in the interface to add it automatically to the interface file; or type it first in the interface and have it implemented automatically. It pays to learn the keyboard shortcuts

Live templates let you type an abbreviation and expand it to a block of code, which you then tab through to edit. Type for, select the template, press tab, and AppCode will create a for loop; press tab again to edit the variable name and the number of iterations. You can customise and create your own Live templates in the AppCode Preferences dialog.


There are also a ton of performance tools in AppCode [update: note these are links to Xcode tools].  Choose Profile from the Run menu and choose what you want to analyse:


then run your app


You can also do static analysis according to customisable rules.

There is a debugger which works as you would expect including stack trace and variable inspection.

The best thing I can say about AppCode is that it is a pleasure to use. It does not throw up unnecessary dialogs, it works logically, and the tools are easy to use and configure. I have not always found this to be the case with Xcode, and if you spend a significant amount of your time on Objective C development then I recommend grabbing the trial download to discover if it will speed your work.

Post sponsored by Monster for the best in IT Jobs.

8 thoughts on “Review: JetBrains AppCode for Objective C”

  1. There are also a ton of performance tools in AppCode. Choose Profile from the Run menu

    The Profiler (Instruments) is from XCode; nothing unique to AppCode. Otherwise a nice review.

  2. I’ve used RubyMine that uses the same engine as AppCode from IntelliJ. So I haven’t used AppCode and have no desire after my experiences with RubyMine. You can say what you want but it simply isn’t a Mac app. Much that you would expect to work given you’re on a Mac works that way. This is extremely frustrating!
    Not that Xcode 4 is an improvement over Xcode 3. I also find it completely unintuitive and a horrible UI mess. Why do all these tools have to look like Windows development suites?

    1. Thanks Annard, interesting. Perhaps I don’t feel this so much because I regularly switch between Mac and Windows. I would be interested in specifics though. As I developer, I care more about the native integration of the apps I create, than about the native integration of the tool that creates them.


  3. Hi Annard,

    AppCode is much more polished in providing a native experience based on feedback that we’ve had, if you’re referring to certain functionality in terms of key combinations and behavior. The underlying technology being Java I doubt is a deterministic factor to provide this experience. But I’d love to hear about specifics.


  4. In my opinion, the most important aspect of an IDE is productivity – and certainly not whether it requires Java or doesn’t feel like a Mac application. The code navigation, re-factoring features, and on-the-fly code analysis are almost like pure gold 🙂

  5. I’d agree with Annard Xcode 4.x is a backward step from 3.x (imho) but this tool doesnt offer anything better than Xcode4.

  6. Jetbrains makes really good stuff. I use their Resharper product for c# development. If you value your time and want to increase your productivity, the Live Templates feature alone is well worth the price. The ability to define your own code templates is also a really HUGE time saver. The other thing I really like is the Code Analysis. This awesome feature will give you hints on your code that you didn’t know, forgot or have yet to learn. A fantastic feature that will also help you learn the language.

  7. I use AppCode because I would go crazy and grow grey hair early if I had to use Xcode for day to day development.

    The difference is that Xcode is a glorified text editor, whereas AppCode is an actual IDE. In my definition an IDE does everything for you that a compiler can do. Search for usages of a method – well the compiler knows exactly where a method is invoked – ok let’s allow some vagaries for the dynamic nature of Obj-C, but by and large it does – and so AppCode can show you.

    Code generation takes care of ALL the issues I have with Objective C as a language – the extreme verbosity and clumsy .h / .m file separation for example. Obj-C is old, and it shows. But with AppCode, it’s almost like a normal language.

    Example: I want a new ivar based property. In Xcode I have to declare / define this in 3 different places in 2 files, with no help from the editor. DRY? Never heard of it! Then I want to delete the variable – oh, same thing again.

    In AppCode, I type the ivar declaration and hit “generate property” and it does it all. Rename? Refactor-Rename the iVar, it also renames the property (it asks). Delete? Refactor delete removes it.

    AppCode also has in-place fixes so for example I will write:
    self.somePropertyName = [… something …];

    There is no “somePropertyName” so AppCode asks me if I want to generate it, and does that, taking a pretty good guess on the type, but allowing me to change the type and kind of property. These are the things that make your life easier as a developer – develop with pleasure!

    Another huge time saver – intelligent completion for blocks! You know the blocks syntax is pretty horrific, but blocks are super useful. With AppCode, you type the method name of a method with blocks, tab through and fill in the variable parameters, and if it’s a block, shift-ctrl-space generates a block with the right signature for you. Also useful if you didn’t really know the type of block.

    There’s many more things like that, at the end of the day you’ll make the cost back in productivity on day one. And with much less hair-pulling. Some things, like refactorings also will make you fix problems you maybe wouldn’t bother with in Xcode because it’s too cumbersome there.

Comments are closed.