Important: This document may not represent best practices for current development. Links to downloads and other resources may no longer be valid.
To a developer new to it, Cocoa might seem like a vast, uncharted new world of technology. The features, tools, concepts, designs, terminology, programming interfaces, and even programming language of this development environment may all be unfamiliar. Cocoa Fundamentals Guide eases the initial steps to Cocoa proficiency. It provides an orientation to the technological landscape that is Cocoa. It introduces its features, basic concepts, terminology, architectures, and underlying design patterns.
You can build Cocoa applications for two platforms: the OS X operating system and iOS, the operating system for Multi-Touch devices such as iPhone, iPad, and iPod touch. Cocoa Fundamentals Guide presents Cocoa-related information for both platforms, integrating the information as much as possible and pointing out platform differences when necessary. The intent is that, as you become familiar with Cocoa for one platform, it will become easier to transfer that knowledge to software development for the other platform.
Cocoa Fundamentals Guide is structured to lead gradually to a general understanding of what Cocoa development is all about. It starts with the most basic information—what Cocoa is in terms of its components and capabilities—and ends with an examination of its major architectures. Each chapter builds on what was explained in previous chapters. Each section gives the important details about a subject, yet describes it at only a high level. A section frequently refers you to another document that offers a more comprehensive description.
In the set of Cocoa developer documentation, Cocoa Fundamentals Guide is the conceptual entry-point document. It is prerequisite reading for other essential Cocoa guides, such as Cocoa Drawing Guide, View Programming Guide, and App Programming Guide for iOS. Cocoa Fundamentals Guide assumes little in terms of prerequisite reading, but readers should be proficient C programmers and should be familiar with the capabilities and technologies of the platform they will be developing for. For OS X, you can acquire this familiarity by reading Mac Technology Overview; for iOS, read iOS Technology Overview.
Organization of This Document
Cocoa Fundamentals Guide has the following chapters:
What Is Cocoa? introduces Cocoa from a functional and broadly architectural perspective, describing its features, frameworks, and development environment.
Cocoa Objects explains the advantages and basic use of Objective-C, plus the common behavior, interface, and life cycle of all Cocoa objects.
Adding Behavior to a Cocoa Program describes what it's like to write a program using a Cocoa framework and explains how to create a subclass.
Cocoa Design Patterns describes the Cocoa adaptations of design patterns, especially Model-View-Controller and object modeling.
Communicating with Objects discusses the programming interfaces and mechanisms for communication between Cocoa objects, including delegation, notification, and bindings.
You can find several excellent third-party introductions to Cocoa in technical book stores. You can use these books to supplement what you learn in Cocoa Fundamentals Guide. In addition, there are a few other Apple publications that you should read when starting out as a Cocoa developer:
The Objective-C Programming Language describes the Objective-C programming language and runtime environment.
Model Object Implementation Guide discusses basic issues of subclass design and implementation.
Developing Cocoa Objective-C Applications: A Tutorial shows you how to build a simple Cocoa application for OS X using the Xcode development environment, the Cocoa frameworks, and Objective-C. Your First iOS App is a tutorial that guides you through the creation of a simple iOS application, showing you along the way the basics of the Xcode development environment, Objective-C, and the Cocoa frameworks.
App Programming Guide for iOS presents information specific to the frameworks used to develop applications for devices running iOS.