

Ask YC Hackers: Best text for learning to develop apps for Mac OS X - pius

I know all of the cool kids (myself included) are doing web apps, only deigning to develop for the client side through AIR, Gears, etc.  <p>That notwithstanding, I'd like to dip my toes into the water of OS X development.  What's the best book for getting acquainted with it?  Bonus points if you know of a book that's going to receive a Leopard-inspired update soon.
======
nirs
This is a nice web page for starting up with cocoa:
[http://andymatuschak.org/articles/2007/09/09/getting-
started...](http://andymatuschak.org/articles/2007/09/09/getting-started-with-
cocoa-a-friendlier-approach/)

------
uuilly
<http://trolltech.com/>

I can't comment on Cocoa. But if you know C++ Qt is a dream. They have amazing
libraries that make up for the shortcomings of C++. It also makes native look
and feel cross-platform development a snap. Google Earth is built in Qt. It
has a dual license, documentation + community are great. Can't say enough good
things about it.

~~~
nirs
If you want to create Mac OS X apps, forget about multi platform stuff - your
customers do not care if your app runs on other platforms, and they will
ignore your app if it does look and behave like a great Mac app.

~~~
uuilly
It is a universal Gui API. So on OS X it api's to carbon (soon to be cocoa.)
On windows it api's to mfc and on linux to xwin. So yes, it has exactly the
same look and feel as a mac app or whatever platform you choose build on. Once
it's compiled it's just a bunch of native system gui calls so there is no way
to tell the difference. You've probably used Qt a million times and not known
it. Opera and Google Earth are both Qt apps.

Even if I was only releasing on one platform I would still use it b/c it is so
simple and powerful. And what's the harm in having your app available to the
other 90% of computer users?

~~~
nirs
Opera and Google Earth are good examples of such apps - they suck. Both have
non native and ugly user interface. So if you your app does more or less what
other apps do, but looks like this, people will prefer the native cocoa apps.

~~~
uuilly
Agreed, they have ugly Ui's but that's not Qt's fault. When you want an "Ok"
button, a dialog or a check box in Qt, it's calling the EXACT SAME function
that get's called when you do it without Qt. So by definition it is native.
You should check it out. You might change your mind.

------
nickb
I am learning Obj-C and Cocoa right now and I'm using this book
[http://www.amazon.com/Cocoa-Programming-Mac-
OS-X/dp/02017268...](http://www.amazon.com/Cocoa-Programming-Mac-
OS-X/dp/0201726831)

It's excellent. I also found Apple's documentation quite good (Obj-C 2.0 stuff
is great).

~~~
boucher
The second edition of that book is more relevant:

[http://www.amazon.com/exec/obidos/ASIN/0321213149/bignerdran...](http://www.amazon.com/exec/obidos/ASIN/0321213149/bignerdranch-20)

That being said, the third edition is coming out this spring.

On a completely separate note, I would be careful about relying on Obj-C 2.0.
If you want to actually release something in the near future, you won't be
able to rely on it if you want to include 10.4 users. And of course, there's
the issue of how great garbage collection really is...

~~~
nirs
This is a great book to start with. After you finish it, this one is also
good: [http://www.amazon.com/Advanced-Mac-Programming-Core-
Unix/dp/...](http://www.amazon.com/Advanced-Mac-Programming-Core-
Unix/dp/0974078514/)

------
rnesh
When I worked at the Apple Store, I was complaining to a customer that they
didn't sell any books when it came to coding (everything had to do with using
your ipod and beginners guides to the OS). Turns out this customer was from SV
and worked for Apple, although he never mentioned what he really did. He
suggested that if I "want to make money" to learn AppleScript. I taught myself
by just reading tutorials online, and learned you can do some pretty cool
stuff with AppleScript. However, I personally would say one should put more
focus on Objective-C and Cocoa. I began doing that (many tutorials online),
but soon after got into web apps and put my focus elsewhere.

So, in my opinion, get a feel for AppleScript, then move on to Objective-C and
Cocoa.

~~~
nirs
AppleScript is nice tool for special jobs, but you do not like to write
complete apps with it. It is too annoying to write, slow and hard to debug.
Use it to script other apps.

If you are looking for easier development environment, try pyobjc:
<http://pyobjc.sourceforge.net/>

