So, as you know, I've been reading Cocoa Programming for Mac OS X by Aaron Hillegass... and I am winding down on the examples. My git repository tells the story via commits (most commits are chapters)... and I'm down to the last few chapters, so I decided to drop a quick note to review it.
Overall: 9 / 10
Seriously, when it comes to moving to writing desktop applications on the Mac and iPhone, Objective-C is still the defacto route. Granted RubyCocoa made it's appearance in Leopard, but it's still being wildly developed and is only capable of creating applications for Leopard and forward, not Tiger or iPhone. And I have to say, this book feeds you what you're looking for.
With some small background in desktop development (myself having many years in Windows Forms), the core concepts will come quickly... The tools aren't quite there yet, Interface Builder still requires you to do just as much work in wiring up the interface and is a totally different approach to desktop development. It does provide better mechanisms for development if you follow the MVC/MVP patterns... which is a great thing.
Back to the book. I love the format. It's very personal and casual. He has a natural knack for telling you only exactly what you need to know and a little taste of what you should continue learning about. It starts out with introductions to the ties between XCode, Interface Builder, Cocoa, and Objective-C... then throws you around loops in basic walkthroughs of core classes and concepts you should know while developing Cocoa applications.
It builds upon itself, major props. Each Chapter continues to add to your collective knowledge and most of the time you're building on top of your previously built application from the last chapter. I like how it keeps you focused on Objective-C and not completely using NSData and it's modeling capabilities. Which in fact, you can write an entire data mining application with serialization completely within Interface Builder and no code. Impressive Apple... Impressive. NOTE: Microsoft tools have/are getting these features and functionality, but it feels more dirty as you're exposed to code and required to do wire up and more boilerplate code.
Objective-C in itself is pretty interesting. There are lots of things I don't like about it. I wish it weren't on top of C. I understand what you get with it... but I also don't like how you can mix your context and start to lose memory quickly. I guess this comes from a developer who has spent many years in a completely garbage collected world, only working with procedural, non-GC code during highschool and a little bit during college. I also don't like the Garbage Collection mode switching... if you want an application on the iPhone or < Leopard, you have to go without the GC... the GC only really exists in the Leopard world... Which is fine... and HUGE props to the book getting you ready for not having the GC by having the entire book being able to run with or without the GC.
I sometimes wish that I could generate more stub code with XCode. It does a nice job of doing some simple stubbing with projects and classes, but I want to be able to define something in my interface and then have it auto stubbed in my implementation.
Other than that, it would be nice to have better Type and Method jumping/finding mechanisms.
Back to the book, just buy it... It's fantastic and really gives you all that you need to start deep diving into Cocoa. Go... GO!
SO all in all, this post went from being a book review, which was fantastic, to a slight review on Objective-C, XCode, and Cocoa... Maybe the taste of both is necessary for someone who is reading this, thinking about doing some Mac development.
