I'm all for options, and $50 to $150 usd is not prohibitive for an IDE, but since Xcode is free and directly from Apple, there must be some really good features for me to switch IDEs.
I'm all for options, and $50 to $150 usd is not prohibitive for an IDE, but since Xcode is free and directly from Apple, there must be some really good features for me to switch IDEs.
Once you use a refactoring tool to rename a class and have it renamed everywhere in your project, you get a taste for what XCode is missing. There are several refactorings like this that shave a lot of time out of some of the more annoying tasks. Code generation allows you to define a method or property once and have it added to both .h and .m files, as well as have properties synthesized. If you want to add an argument to the method signature, that is done in one step, too. The SVN integration in IntelliJ IDEA was superb. I have had issues using SVN in XCode where the interface refuses to load history, and the interface for managing conflicts just isn't there (try having 2 devs change the project file). These are just a few things off the top of my head.
For the most part, they're both comparable. Both have powerful refactoring and code-generation abilities.
For core Java development, there's no need to leave Eclipse. IntelliJ might provide some nice features, but overall it doesn't warrant purchasing a license.
When combined with web development, other languages, or non-core development, is where it easily pays off to switch to IntelliJ.
We were doing some Grails work, and Eclipe's support (via STS) was shady at best. We put off trying IntelliJ since it meant learning a new environment, new shortcuts, etc, but after about a day of playing with it, we were sold, and never looked back.
Disclaimer: I'm on the JetBrains "Academy" which means they sponsor some of my speaking and stuff.
The most common refactorings, like rename method/variable/field or change signature are all easily done through the UI. Example: rename (anything) is Shift-F6, <type new name>, enter. I do this all the time.