My editor of choice for iOS development is Xcode. I’ve tried AppCode, too, and while it has some nice features, I just can’t get over the fact that it doesn’t look and feel like a native app on OS X. So in addition to Xcode, these are the top 10 tools I use as I build iOS apps.
1. Alfred for launching and finding everything
I use Alfred all the time to find documents, open Safari bookmarks, search the web, and launch apps. And the clipboard history feature is huge – since I often copy & paste code, I was frequently losing what I had copied earlier. With Alfred’s clipboard history, I never lose what I’ve copied to the clipboard.
2. Dash for finding documentation
While I occasionally use Xcode’s built-in documentation for searching and browsing the Cocoa Touch docs, it’s often quicker and easier for me to find what I’m looking for in Dash. I use it inside of Alfred so I can type, for example, “dash uitable” and it immediately shows me results from the iOS docs that include “uitable”. It’s really handy for finding the APIs I need.
3. Reveal to debug views
When a view is missing from the screen or just out of place, I use Reveal to see where it is and what’s wrong. And yes, I know that Xcode has view debugging built in now, but for one, it doesn’t work on iOS 7. And for two, it doesn’t allow me to modify views at runtime. Reveal lets me change the size, position, color (and more) of views while the app is running, so I can quickly find out wheer things are and where they need to be. And Reveal has recently added the ability to debug Auto Layout constraints, so you can see – at runtime – what constraints are causing your view to be out of place or sized incorrectly.
4. Dropbox to share files and screenshots
You’ve probably used Dropbox to share files on your team – it’s excellent for that. I also use it to share screenshots, so whenever I take a screenshot on my Mac (using ⌘⇧4, Space, click), Dropbox automatically moves it to a folder and copies a link to the clipboard so I can quickly paste the link into an email, chat, or task in an issue tracker. To set it up, just go to Dropbox Preferences > Import and check the box for Share screenshots using Dropbox.
5. Slack for team communication
Slack has become my preferred method of communication within a team. I like that it integrates with GitHub (and a host of other apps) so I know when someone creates a new pull request without needing to constantly refresh GitHub or check my email. But the biggest benefit to me of using Slack is that I can focus on my work and communicating with the team – which I can’t do in my email.
6. Screenhero for remote pair programming
Absolutely the best way to pair program remotely, Screenhero gives both people a mouse cursor and keyboard input in addition to voice chat. Much better than pairing on Skype, for example, which only gives one person control of the mouse & keyboard. Screenhero has recently joined Slack – all the more reason to use Slack.
7. Kaleidoscope for merging files
When there’s a merge conflict in the codebase, dealing with it is slightly less awful with Kaleidoscope. I’ve been using it for years and absolutely love it. It’s the best diff tool out there by far, and it makes merges much easier.
8. Spectacle for moving and resizing windows with keyboard shortcuts
Spectacle is one of those tools that I never really see but use all the time. I use it to move windows to the next screen, resize to the left or right half of the screen, and make them full screen – all using the keyboard. Much faster than trying to do any of those things with the mouse.
9. Glui to mark up screenshots
Often I like to take a screenshot and mark it up with arrows and boxes and text to make it clear what I mean, and I use Glui for that. After marking up a screenshot, one click will upload the file to Dropbox and copy a link to your clipboard you can share with your team.
10. Backblaze for online backups
I never want to lose my work, so I use a combination of Backblaze (online backups) + Time Machine (on-site backups at work and home) to make sure everything is backed up in multiple places. It’s easy to set up and runs continuously in the background, so all my files are always backed up.
In addition to these, I occasionally use…
Atom for basic text editing, 1Password to store passwords, Shush for muting the microphone via the keyboard, Skype for voice and video calls, TextExpander for typing less, The Hit List for tracking tasks, xScope for measuring and positioning elements on screen, Deploymate for verifying that my app will run on the target OS, and Reflector to show my iOS device’s screen on my Mac.