Let's face it, using XCode in 2016 is a burden that iOS developers are forced to bear.
All the crashes, the eternal indexing, the terrible refactoring functionality, the weird
build fails solved by re-opening the editor, the inability to (sometimes) run individual
unit tests, and other annoyances are already well-known by daily users of the tool.
To some, like me, switching to AppCode isn't a viable solution. The toolchain used by
the JetBrains suite still relies on XCode for many tasks, and you might end up switching between
both IDEs most of the time.
The awkwardness of the Apple development tools is understandable when looking at its history.
OS X, and, more recently, iOS follow the lineage of the operating system developed by another
company by Steve Jobs, NeXT. A more detailed look on how the legacy of the NeXTSTEP operating system
is still living in our Macs and iPhones is available on this Ars Technica article.
XCode is the successor of the NeXT development tools, bundling the
(the .nib extension used on Cocoa and Carbon interface files stands for NeXT Interface Builder) and
the Project Builder
(guess where the cluttered and unmergeable .pbxproj project format comes from).
Although a notable and innovative development suite for its time -- Tim Berners-Lee used it to develop the first WorldWideWeb browser at the CERN -- it's still a piece of software designed in the late 80s.
Apart from adding support to new mobile platforms and programming languages, Apple hasn't done much
to bring the development evironment to the 21st century. The featureset still lags behind contemporary alternatives,
like Microsoft's Visual Studio or even Google's Android Builder, which is based on IDEA's IntelliJ.
Luckily, some plugins can ease this suffering and fill some of the usability gaps left by the Cupertino company.
Alcatraz is a plugin manager for XCode and your
starting point on pimping up your development environment. Installing it is as simple as
running the install script found at
The plugin manager window can be opened by the shortcut ⌘ + ⇧ + 9.
The Auto Highlight Symbol improves drastically the
built-in symbol highlighting from XCode by using a configurable background color to highlight the text,
instead of the barely visible underlining.
One simple feature overlooked by the XCode text editor is highlighting the current line where the cursor is placed.
Luckily, the Backlight plugin fixes that.
I always wondered why the autocomplete dialog from from XCode didn't use the same algorithm as the quick open
functionality (accessed at ⌘ + ⇧ + O). The FuzzyAutocomplete
plugin does exactly that, using Xcode's own
IDEOpenQuicklyPattern to implement a better autocomplete algorithm.
A fascinating writeup by chendo explains how he used
dtrace to inspect what the infamous IDE is doing under the hood
and implement this great plugin.
I've created the habit to curse Apple and their lack of love towards developers using their platform everytime I have to resize, crop
and rename images to generate app icons. After dealing with a suite of imagemagick scripts, I've decided to use IconMaker for the job. It adds a tool that allows on to easily create asset catalogs from a source image.
A very necessary and basic feature lacking on XCode is filtering the output of the console. Android developers can easily
do that using UNIX tools such as
grep, but iOS developers are hostages to Apple's walled garden.
MCLog comes to the rescue, adding a search bar to the bottom of the console that
allows the output of a running app to be filtered using regexes.
Another basic IDE use-case overlooked by Apple on XCode that I'm sure most iOS developers will identify with, is
scrolling all the way to the top of a source file to add new import statments.
Peckham solves that by adds a tiny menu with fuzzy autocompletion accessible by
the ⌘ + Ctrl + P shortcut.