Preface to the Second Edition I once studied with a wise mathematician named Soo Bong Chae. Dr. Chae had written a few really good books, and one day he told me his secret: "After I write a book, I put it away for two years. After avoiding the book for two years, I read it and rewrite the parts that need work. Then I publish it." The idea was a good one: By ignoring the book for two years, he could revise it with fresh eyes. But that's not what happened in my case. It has, indeed, been two years since I wrote the first edition of Cocoa(R) Programming for Mac(R) OS X.
In that time, however, I have taught 20 classes using the book as a text. Overall, the first edition was a good book, but it was far from perfect. Where the book was weak, I have suffered. It was with great relish I eliminated these sore spots from this edition. During these two years, Apple has continued innovating upon the strong base that Mac OS X created. Hundreds of tiny improvements were made, and two large changes occurred: Project Builder was replaced by Xcode, and Cocoa bindings were added to Cocoa. Throughout this book, you will use Xcode, and Cocoa bindings are covered in Chapter 6. Also, during these years, I continued my work as a programmer.
As my clients asked for certain features to be added to their products, I came to realize that several topics needed to be addressed in a new edition the book. Besides many new "For the More Curious" sections, the second edition has five entirely new chapters: Chapter 7 describes how to add undo capabilities to an application using NSUndoManager. Chapter 28 demonstrates how to make an application AppleScript-able. Chapter 29 shows how you can use OpenGL calls within a Cocoa application. Chapter 30 gives the necessary steps to create a reusable framework. Chapter 31 will get you started creating Cocoa applications on Linux using GNUstep. The final improvement is a physical one: The second edition has a lay-flat binding so that it can sit at your elbow as you work through the book. Although a subtle change, I think it will make your experience with the book and its ideas a little bit more pleasant.
I don't get to ignore this book after it has been published-the quality of the book has a direct influence on the quality of the courses I teach. Is it a good book? Let me put it this way: I am looking forward to going through it with my students a dozen times this year. I guess that says something. Preface to the First Edition Cocoa is a powerful collection of tools and libraries that enable developers to write applications for Mac OS X. iPhoto, iChat, iCal, iSync and Safari were all written using Cocoa. Why Cocoa? Because it allows programmers to develop full-featured applications faster than ever before. The increased speed does not, however, come for free. The new technologies have a steep learning curve.
This book will guide you through the ideas and techniques that separate the great Cocoa programmers from the wanna-be's. This book is written for programmers who already know some C programming and something about objects. The reader is not expected to have any experience with Mac programming. It is a hands-on book and assumes that the reader has access to Mac OS X and the developer tools. The developer tools are free. If you bought a shrink-wrapped copy of Mac OS X, the developer tools CD was in the box. The tools can also be downloaded from the Apple Developer Connection Web site ( http://connect.apple.
com/ ). -Aaron Hillegass 0321213149P04152004.