Aaron’s Cocoa Programming for Mac OS X is required reading for any OS X developer; (serious or otherwise). Hillegass has a long history with Cocoa and it’s predecessors OpenStep & NextStep. Moreover his day-time job is teaching Cocoa development. So it’s no surprise that his book is such an excellent introduction to Objective-C, the major design patterns of Cocoa and the tool-set: (XCode, Interface Builder and Instruments).
In covering the wider aspects of the programming environment too, Hillegass takes the proven approach of: how to implement real-world applications given the available APIs. What’s more, the book is well rounded, achieves what it sets out to achieve and is well worth the cover price.
That said, Cocoa Design Patterns is a horse of a different color entirely. It’s more of a Hillegass follow-on; in that it assumes a familiarity with Objective-C and the related tool-set. Buck & Yacktman’s offering is a more bottom-up approach that Gang-of-Four aficionados will enjoy. Where Cocoa Design Patterns excels over your typical design-patterns-in-another-language books, however, is that it gives an insight into the design and rationale of the Cocoa API itself.
Sure you can use the patterns in your own Objective-C classes (and indeed are encouraged to do so). But this book is about so much more than that.
The book walks us thru’ 28 patterns in all; explaining the motivation for each (or the problem solved). We’re given a detailed description of each pattern, with examples drawn from Cocoa’s multitude of classes. In focusing on design patterns, we’re given an appreciation for the overall architecture and rationale behind Cocoa itself. The authors aim to provide structure and organization to help programmers find their way. Which they achieve beautifully I might add.
Rather than showing classes in isolation, we’re given an appreciation for how a given pattern explains the relationship between various classes. Something that an initial reading of Apple’s Developer Documentation might not make apparent.
You’d be wise to read Cocoa Design Patterns before you develop too many applications. You’ll get a much better overview, a deeper appreciation for the best way to tackle problems and learn how various parts of the system should interact. (We don’t want any square pegs in any round holes now, do we? ;o)
Hillegass states: “Next time some kid shows up at my door asking for a code review, this is the book that I am going to throw at him” and he’s bang on. But wouldn’t it be nice if we could know the best techniques before we put our design heads on; instead of after we’re done’n’dusted? ;o)