I am a pretty HEAVY Java developer, new to Mac (bought a MBP 2.0) and Objective-C. I was very excited about about getting my hands on XCode and learning some Cocoa development stuff.
I have been working my way through several books, and I have to say, for the most part, I am extremely happy with XCode. I do have some gripes, though, some of which may just be user error on my part. I thought I would share, in the hopes someone with some pull might be able to fix this.
Bad code completion (auto-complete):
As I stated, I am a pretty heavy Java developer, but I also know C, C++, VB, and many other languages. As a result, I have used a LOT of IDEs, the best of which for auto-complete, IMHO, is Eclipse.
Eclipse, for those that dont know, is an IDE written primarily in java, for java, but which has a TON of plugins that do everything from C to Pascal, to Python. The Java editors do an AWESOME job of recommending auto-complete.
On the other hand, when using XCode, I find I am fighting the auto-complete at least 25% of the time. What the heck am I talking about, right? Well, take as an instance code to get reference to the NSUndoController. I did something like this:
Now, later on, I try to send a message to undo, only the auto-complete automatically fills in
I can't tell you HOW many times I have been typing what I was reading, only to find 1/4 of what I just typed was WAY wrong. Or compiled an app to find it core, and then find out its because the reference I thought I used wasn't the right one. And, given Objective-C's unstrict nature when it comes to type casting, the compiler just compiles it right up and tries to run it! No errors, no warnings, just code that craps itself all over my debugger.
My second gripe about auto-complete is that it falls short sometimes. If you use it to insert a for loop, you get
and the <#initial#> is highlighted ready for input. I am like WOW! but, as soon as I type "i=0"...now I have to take my hands off the keyboard, grab the mouse, and select the next section <#condition#> OR I have to hit the right arrow 2 times, followed by Shift-Right Arrow 12 times! Not the model of efficiency. What would be nice is some key, maybe like Option-Tab, that would take you to the next section and highlight it automatically.
Next gripe...it doesn't auto-complete everything! Here's some things I found that don't work that I think should.
My last gripe has to do with the auto-complete trigger. If I type if( I usually end up with one too many '('s like this:
What should happen is that the ( is identified as the leading paren, matched with the corresponding ), and left alone, OR just assume I want to type the if manually, don't help me, and leave me alone! There are several places where this context-sensitive autocomplete can be used to make the experience much better.
Interface Builder:
Ok, this isn't really part of XCode I know, but I consider it part of it, so sue me. Anyway, some outline of the NSView hierarchy would be nice here. For instance, I am tring to change attributes in Inspector for a NSTableView in a NSScrollView inside an NSBox. I click, I get the box, I double click again, I get the scroll view, I doulbe click again and FINALLY I get the table view! God help me if I wanted to change a column name! It also becomes confussing when you try to Click-drag the connections between nested components...my god it gets confussing!
Interface:
Changes I make to the interface do not seem to stick. For instance, I prefer a certain sized window, and the 3-way split with the Editor in the bottom right pane. But, low and behold, I have to redo this EVERY time I open or create a project! Not only that, but clicking the "Toggle Embedded Editor" button makes the editor pane cover the file pane at the top! For the newb, its like "Where the heck did my files go?"
Also, could you make is a little easier to get to Inspector/Info? I mean, pretty much all the coding I have done requires me to have Inspector up in Interface Builder. Why do I have to manually open it EVERY TIME! Same me some clicks, and just remember if I had it open last time I exited. Problem solved.
One final gripe...I wish I could make it auto-compile when I save my source files. I would like to see if pop up errors immediately withought me having to manually run the build. If I save the file, compile.
Well, this is just some of my complaints. I know it looks like I hate XCode, but that can't be farther from the trueth. In fact, thus far, I have rather enjoyed most of it. I just think the whole experience could be better.
I have been working my way through several books, and I have to say, for the most part, I am extremely happy with XCode. I do have some gripes, though, some of which may just be user error on my part. I thought I would share, in the hopes someone with some pull might be able to fix this.
Bad code completion (auto-complete):
As I stated, I am a pretty heavy Java developer, but I also know C, C++, VB, and many other languages. As a result, I have used a LOT of IDEs, the best of which for auto-complete, IMHO, is Eclipse.
Eclipse, for those that dont know, is an IDE written primarily in java, for java, but which has a TON of plugins that do everything from C to Pascal, to Python. The Java editors do an AWESOME job of recommending auto-complete.
On the other hand, when using XCode, I find I am fighting the auto-complete at least 25% of the time. What the heck am I talking about, right? Well, take as an instance code to get reference to the NSUndoController. I did something like this:
Code:
NSUndoManager undo = [self undoManager]
Code:
undoDev
My second gripe about auto-complete is that it falls short sometimes. If you use it to insert a for loop, you get
Code:
for (<#initial#>; <#condition#>; <#increment#>) {
<#statements#>
}
Next gripe...it doesn't auto-complete everything! Here's some things I found that don't work that I think should.
- Typing @" should know you want a trailing "
- Typing [ should out in the trailing ]
- Removing a @" or a [ should remove the corresponding " or ]
- Typing a selector name that is in the interface but not your implementation should insert the selectors signature with the brackets, much like it does for init and dealloc
- Typing a selector name that overrides a super's selector should allow you to fill in the signature for that selector with a [super <selector>] call in there already
My last gripe has to do with the auto-complete trigger. If I type if( I usually end up with one too many '('s like this:
Code:
if (() {
<#statements#>
}
Interface Builder:
Ok, this isn't really part of XCode I know, but I consider it part of it, so sue me. Anyway, some outline of the NSView hierarchy would be nice here. For instance, I am tring to change attributes in Inspector for a NSTableView in a NSScrollView inside an NSBox. I click, I get the box, I double click again, I get the scroll view, I doulbe click again and FINALLY I get the table view! God help me if I wanted to change a column name! It also becomes confussing when you try to Click-drag the connections between nested components...my god it gets confussing!
Interface:
Changes I make to the interface do not seem to stick. For instance, I prefer a certain sized window, and the 3-way split with the Editor in the bottom right pane. But, low and behold, I have to redo this EVERY time I open or create a project! Not only that, but clicking the "Toggle Embedded Editor" button makes the editor pane cover the file pane at the top! For the newb, its like "Where the heck did my files go?"
Also, could you make is a little easier to get to Inspector/Info? I mean, pretty much all the coding I have done requires me to have Inspector up in Interface Builder. Why do I have to manually open it EVERY TIME! Same me some clicks, and just remember if I had it open last time I exited. Problem solved.
One final gripe...I wish I could make it auto-compile when I save my source files. I would like to see if pop up errors immediately withought me having to manually run the build. If I save the file, compile.
Well, this is just some of my complaints. I know it looks like I hate XCode, but that can't be farther from the trueth. In fact, thus far, I have rather enjoyed most of it. I just think the whole experience could be better.