Synopses & Reviews
“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.”
–Aaron Hillegass, founder of Big Nerd Ranch, Inc., and author of Cocoa Programming for Mac OS X
Unlocking the Secrets of Cocoa and Its Object-Oriented Frameworks
Mac and iPhone developers are often overwhelmed by the breadth and sophistication of the Cocoa frameworks. Although Cocoa is indeed huge, once you understand the object-oriented patterns it uses, you’ll find it remarkably elegant, consistent, and simple.
Cocoa Design Patterns begins with the mother of all patterns: the Model-View-Controller (MVC) pattern, which is central to all Mac and iPhone development. Encouraged, and in some cases enforced by Apple’s tools, it’s important to have a firm grasp of MVC right from the start.
The book’s midsection is a catalog of the essential design patterns you’ll encounter in Cocoa, including
- Fundamental patterns, such as enumerators, accessors, and two-stage creation
- Patterns that empower, such as singleton, delegates, and the responder chain
- Patterns that hide complexity, including bundles, class clusters, proxies and forwarding, and controllers
And that’s not all of them! Cocoa Design Patterns painstakingly isolates 28 design patterns, accompanied with real-world examples and sample code you can apply to your applications today. The book wraps up with coverage of Core Data models, AppKit views, and a chapter on Bindings and Controllers.
Cocoa Design Patterns clearly defines the problems each pattern solves with a foundation in Objective-C and the Cocoa frameworks and can be used by any Mac or iPhone developer.
Praise for Cocoa Design Patterns
“This long-needed book is a great resource for Cocoa newcomers and veterans who want to get the why behind the what. The list of patterns gives historical perspective and answers many developer questions and the last three chapters–covering Core Data, AppKit, and Bindings–are a must-read; they reveal insights that might otherwise require hours of discussion with Apple engineers or access to source code.”
–Tim Burks, Software Developer and Creator of the Nu Programming Language, www.programming.nu
“This book is a comprehensive and authoritative treatment of design patterns and their practical applications in Cocoa projects. I recommend this book to anyone who wants to advance from intermediate to expert proficiency as a Macintosh developer.”
–John C. Randolph, Vice President Engineering, Stealth Imaging, Inc.
“Cocoa Design Patterns is a fantastic book that will show you the ins and outs of software design patterns, how Cocoa makes use of them, and how to apply them to your own applications for better, more robust, and more maintainable software.”
–August Trometer, Owner of FoggyNoggin Software
“Cocoa Design Patterns is superb! It is highly readable, thoroughly enjoyable, and filled to the brim with wisdom that will make you a more efficient and effective programmer. The authors utilize a consistent and self-contained approach to each chapter, making it easy to return to use as a reference. However, the material is so interesting and vital to Cocoa programmers that you’ll want to read it from cover to cover.”
–David Mandell, Independent Developer
“Erik and Donald’s book really helped me out with the conceptual side of programming. It caused me to realize where I was going wrong in my code and helped me sort out my design issues.”
“This book is recommended for any programmer interested in a deeper understanding of Cocoa. Reading it might have helped me become a better software engineer in any object-oriented language. I’ll keep it handy as a constant reference and look forward to reading it again more carefully.”
Much of the technology embodied by Apple's Cocoa software development frameworks have been in commercial use since 1988, and in spite of many years of use, the Cocoa frameworks are still revolutionary. Cocoa technology has been marketed with a variety of names including NeXTstep, OpenStep*, Rhapsody, and Yellow Box. In recent years, Apple has expanded the frameworks dramatically and added new tools to raise the bar for Cocoa programmer productivity beyond its already famously high levels.
Programmers are often overwhelmed by the breadth and sophistication of Cocoa when they first start using the frameworks. Cocoa is huge, but it’s also elegant in its consistency and simplicity which result from the application of patterns throughout its design. Understanding the patterns enables the most effective use of the frameworks and serves as a guide for writing your own applications.
This book explains the object-oriented design patterns found in Apple’s Cocoa frameworks. Design patterns aren't unique to Cocoa; they're recognized in most reusable software libraries and available in any software development environment. Design patterns simply identify recurring software problems and best practices for solving them. The primary goal of this book is to supply insight into the design and rationale of Cocoa, but with that insight, you'll be able to effectively re-use the tried and true patterns in your own software - even if you aren't using Cocoa.
Explaining the object-oriented design patterns found in Apple's Cocoa frameworks, this book supplies insight into the design and rationale of Cocoa. With that insight, professionals will be able to effectively re-use the tried-and-true patterns in their own software.
About the Author
Erik M. Buck founded EMB & Associates, Inc. in 1993 and built the company into a leader in the aerospace and entertainment software industries by leveraging the NeXT/Apple software technology that would later become Apple’s Cocoa frameworks. Mr. Buck has also worked in construction, taught science to 8th graders, exhibited oil on canvas portraits, and developed alternative fuel vehicles. Mr. Buck sold his company in 2002 and currently holds the title of Senior Staff at Northrop Grumman Corporation. Mr. Buck received a B.S. degree in computer science from the University of Dayton in 1991 and is a frequent contributor to Cocoa mailing lists and technical forums.
Donald A. Yacktman has been using Cocoa and its predecessor technologies, OpenStep and NextStep, professionally since 1991. He coauthored the book Cocoa Programming and has contributed to the Stepwise website as both author and editor. He has worked for Verio/iServer and illumineX in the past. At present he works as an independent consultant assisting in the design and implementation of Cocoa and iPhone applications. Mr.Yacktman received B.S. and M.S. degrees in electrical and computer engineering from Brigham Young University in 1991 and 1994, respectively.
Table of Contents
Part I: One Pattern to Rule Them All 1
Chapter 1: Model View Controller 2
Chapter 2: MVC Analyzed and Applied 17
Part II : Fundamental Patterns 28
Chapter 3: Two-Stage Creation 29
Chapter 4: Template Method 43
Chapter 5: Dynamic Creation 53
Chapter 6: Category 63
Chapter 7: Anonymous Type and Heterogeneous Containers 77
Chapter 8: Enumerators 85
Chapter 9: Perform Selector and Delayed Perform 99
Chapter 10: Accessors 107
Chapter 11: Archiving and Unarchiving 123
Chapter 12: Copying 135
Part III: Patterns That Primarily Empower by Decoupling 147
Chapter 13: Singleton 148
Chapter 14: Notifications 159
Chapter 15: Delegates 175
Chapter 16: Hierarchies 191
Chapter 17: Outlets, Targets, and Actions 206
Chapter 18: Responder Chain 220
Chapter 19: Associative Storage 232
Chapter 20: Invocations 242
Chapter 21: Prototype 255
Chapter 22: Flyweight 263
Chapter 23: Decorators 268
Part IV: Patterns That Primarily Hide Complexity 274
Chapter 24: Bundles 275
Chapter 25: Class Clusters 282
Chapter 26: Façade 302
Chapter 27: Proxies and Forwarding 312
Chapter 28: Managers 328
Chapter 29: Controllers 337
Part V : Practical Tools for Pattern Application 364
Chapter 30: Core Data Models 365
Chapter 31: Application Kit Views 379
Chapter 32: Bindings and Controllers 393
Appendix: Resources 404