First Impression of appCode, JetBrains Objective-C IDE

JetBrains just released their first EAP version of a new IDE for Objective-C.

Objective-C ???? Yes, no joke. :-)

The JetBrains page says:

appCode is a new IDE based on IntelliJ platform, for developers building apps for Apple devices such as Macs, iPhones & iPads.”

I don’t do daily programming in Java but If I do java programming I use IntelliJ IDEA. At work with the commercial version and at home with the community edition.

My free time interest right know is iOS development and I have written a couple of articles about iOS stuff on my blog. So I was quite curious to take look at appCode.

I downloaded the archive and started to play around with it.

Here are a couple of things I tried:

Loading an Xcode project did work without problem.

Building and running my app did work out of the box. The only thing was that I had to specifically set the device to iPad. It didn’t pick that up by itself.

Using the typical IDEA run/debug configuration dialog I was also able to configure and run my GTM unit tests. appCode recognizes all the targets from the Xcode project and you can modify the SDK, device and so on.

appCode doesn’t seem handle the test results so far. It complained about 65 errors although only 2 failed. Not sure where it got that number from. The failing tests are not appCodes fault. Double clicking the error also didn’t jump to the source.

Debugging works too. I was able to set breakpoints and step through the code. [Update: 11.04.] A bit strange is that it didn’t honor breakpoints in all methods. I’m unable to reproduce the breakpoints that did not work. I retried multiple times and now it just works. I don’t know what made me believe it did not stop on all breakpoints.

The editor itself works great. You are directly at home if you know IntelliJ IDEA. It offers a similar feature set:

IDEAs common navigation shortcuts, auto completion, inspections, live templates and so on.

At the left of the editor you have small icons that tell you that a method overwrites a base class method and clicking it will jump to its declaration. appCode also marks methods with a small pair of arrows icon to jump from declaration to definition and the other way.

Auto completion works really good. I’ve just used it a short time but it looks like it provides better suggestions (less noise) than Xcode.

Inspections. It’s recognizing unused #imports and variables and creates the IDEA typical yellow lines in the editor scroll bar.

Live Templates work too. For example typing alloc<tab> will result in [[ alloc] init] with the cursor before the alloc.

It also comes with a number of refactorings. I tried rename and extract method without problems.

appCode did open a xib file as xml. It didn’t run Interface Builder. Not sure if it is even possible to run Interface Builder now that it is built into Xcode 4.

It also had some problem to find all the #imported files and complained about undefined symbols (in the editor, building works, I guess it simply runs xcodebuild).

I have created a couple of different source folders in my project to organize the sources. In Xcode I have set a couple of additional #import folders and #import header files relative to them.

appCode didn’t pick up the additional #import folders. You can tell appCode about the source root folder and test source root folder but that did not completely fix this issue. I have three parallel source folders: “Source”, “Source Test” and “Source External” and the external folder contains the GTM, OCMock and OCHamcrest code which appCode did not find.

My first impression (after maybe an hour and a half) is quite good. I think I will spend some more time working with it and see how it feels when doing some real work.

What’s your opinion on appCode?