When I started developing for the iPhone after a fifteen-year break from software, my first thought was: What is going on here? I'd written machine code for Macs and had some experience with earlier versions of Mac OS. It soon became obvious that Cocoa Touch was doing clever things behind the scenes, and that my apps were supposed to be exchanging information with those clever things.
Unfortunately, neither the official documentation nor unofficial sources of help were making it clear what those things were.
With enough persistence, it's possible for almost any developer to reverse-engineer the documentation and answer the “What is going on here?” question for himself or herself. But it's more productive to have that information before starting out. So my first goal for this book is to equip you, as a developer, with the key concepts you need to build Cocoa projects efficiently and productively.
Understanding Cocoa means more than being able to name-check concepts like delegation and Model-View-Controller; it means learning how Cocoa applies these concepts, how they influence the design of Cocoa's classes, and how your code can leverage the features built into Cocoa to simplify projects and minimize development time. In short, it means discovering how to think Cocoa. New features will begin to feel intuitive once you understand the reasoning behind them.
My second goal for the book is to give readers the skills they need to answer Cocoa questions for themselves, without ...