Victus Spiritus


Building an App for Mac OS X Part 1

16 Feb 2011

This is the first post in a series on understanding the basics of developing for the Mac platform. As I proceed with building the app, I'll share helpful documentation and discoveries along the way.

I decided to create my first Mac store app after some encouragement from my wife. While I've created simple apps for myself in the past, I wanted to build a simple utility and put it out there for other folks to use. My background for Mac OS X apps is zero, although I have walked through a hello world tutorial for iOS.

I started out by signing up for the Apple developer license (free), downloaded the latest Xcode (3.2.5) build, and dropped $99 bucks on gaining access to sell through the Mac store. I'm pretty sure that fee covers distributing apps through iOS for the iPhone, iPod, and iPad as well. If you're just interested in trying out the build tools or building for yourself and distributing your software through other means (go github!) you can skip the fee.


There's plenty of documentation available at the Mac Dev Center, but I found Using MacRuby particularly helpful for my app plans. A solid foundation for Mac apps is discussed in the introduction to cocoa tutorial, or if you prefer you can grab the pdf of the same documentation. Thus far the most helpful docs in understanding how to connect view (the user interface) to the controller/models are Defining the view which cover Next Interface Build (nib) files, and Bridging the model and view. Even though the latter doc is focused on objective c implementation it covers how any Cocoa view is glued to model functionality through a controller (actions, outlets, etc).

Here's a peak at the alpha interface for KeyBinder:

What I'm planning for the app is straight forward (setting keybindings), and in follow on posts I'll describe how I build out the interface into a visual control system for keybinds. It's fine by me if other folks build similar apps, my main goal is understanding how Mac apps are constructed and deployed to the App Store.