I usually don’t read tech books cover to cover. Typically, they’re used for reference — looking up something here or there, finding a technique and reading the chapter, or just giving up because the book is written so badly the more advanced sections are completely impenetrable. This was an exception. I read every chapter, did every exercise, and came out feeling I actually learned enough to be dangerous.
"Cocoa Programming: A Quick Start" is not for beginners. It assumes from the outside the reader has had years of C and C++ experience, is familiar with all of the standard programming techniques and the standards OO development techniques and, near the end, has a good grasp of threading and functional programming. The idea is not to teach /programming/ per se but to get a professional software engineer from 0 to building useful MacOSX, iPhone and iPad apps in a relatively short about of time. Projects begin with the very simple, no code required application using widgets all the way through to writing somewhat complex applications using threading and queuing with all the very important pieces — delegates, notifications, memory management, persistence, introductions to core data — in between.
For someone dedicated to working through the book, I found it takes about three weeks to get through all of the tutorials. The tutorials must be completed — no skipping steps — because the next chapter often builds upon the first. The text is clear and I found all the code samples in the book to be pretty bug-free. The concepts move pretty fast. Only a few paragraphs are spared for a new concept before jumping in feet first. Since I’m one of those people who "learn by doing" this worked for me. After typing in the tutorials by the end of the book I was comfortable with the Objective C MVC models, I understood how connections and bindings worked, and I could see how to extend my own controllers with new messages to make new event-driven models. I was surprised how many applications fall into CRUD models (create/read/update/delete) but also pleasantly surprised how easy it is to work with Core Data to make data-driven applications.
I only have really two issues with the book. The first is mechanical: the text applies to XCode 3. XCode 4 was a major revision to the GUI interface of the iDE so many of the hot keys and screen shots no longer apply. This was incredibly confusing for the first few chapters until I learned where everything was. The second is finishing the book leaves me with a "what now?" feeling. There’s a few days of failing while ideas about projects coalesce.
I would and do recommend this book to seasoned adventurers who are looking for a brave new world to conquer. Objective C, once one gets past the mildly bizarre Simula-based syntax, isn’t that bad and there’s lots of cool things to build. "Cocoa Programming" is a pretty strong place to start to get oriented and get going causing app-based havoc.