Important: This document describes an older version of Objective-C and has not been updated to the current version. Developers learning Objective-C should instead refer to Programming with Objective-C.
The Objective-C language is a simple computer language designed to enable sophisticated object-oriented programming. Objective-C is defined as a small but powerful set of extensions to the standard ANSI C language. Its additions to C are mostly based on Smalltalk, one of the first object-oriented programming languages. Objective-C is designed to give C full object-oriented programming capabilities, and to do so in a simple and straightforward way.
Most object-oriented development environments consist of several parts:
An object-oriented programming language
A library of objects
A suite of development tools
A runtime environment
This document is about the first component of the development environment—the programming language. This document also provides a foundation for learning about the second component, the Objective-C application frameworks—collectively known as Cocoa. The runtime environment is described in a separate document, Objective-C Runtime Programming Guide.
Who Should Read This Document
The document is intended for readers who might be interested in:
Programming in Objective-C
Finding out about the basis for the Cocoa application frameworks
This document both introduces the object-oriented model that Objective-C is based upon and fully documents the language. It concentrates on the Objective-C extensions to C, not on the C language itself.
Because this isn’t a document about C, it assumes some prior acquaintance with that language. Object-oriented programming in Objective-C is, however, sufficiently different from procedural programming in ANSI C that you won’t be hampered if you’re not an experienced C programmer.
Organization of This Document
The following chapters cover all the features Objective-C adds to standard C.
A glossary at the end of this document provides definitions of terms specific to Objective-C and object-oriented programming.
This document makes special use of computer voice and italic fonts. Computer voice denotes words or characters that are to be taken literally (typed as they appear). Italic denotes words that represent something else or can be varied. For example, the syntax:
@interface and the two parentheses are required, but that you can choose the class name and category name.
Where example code is shown, ellipsis points indicates the parts, often substantial parts, that have been omitted:
- (void)encodeWithCoder:(NSCoder *)coder
If you have never used object-oriented programming to create applications, you should read Object-Oriented Programming with Objective-C. You should also consider reading it if you have used other object-oriented development environments such as C++ and Java because they have many expectations and conventions different from those of Objective-C. Object-Oriented Programming with Objective-C is designed to help you become familiar with object-oriented development from the perspective of an Objective-C developer. It spells out some of the implications of object-oriented design and gives you a flavor of what writing an object-oriented program is really like.
The Runtime System
Objective-C Runtime Programming Guide describes aspects of the Objective-C runtime and how you can use it.
Objective-C Runtime Reference describes the data structures and functions of the Objective-C runtime support library. Your programs can use these interfaces to interact with the Objective-C runtime system. For example, you can add classes or methods, or obtain a list of all class definitions for loaded classes.
Objective-C supports three mechanisms for memory management: automatic garbage collection and reference counting:
Automatic Reference Counting (ARC), where the compiler reasons about the lifetimes of objects.
Manual Reference Counting (MRC, sometimes referred to as MRR for “manual retain/release”), where you are ultimately responsible for determining the lifetime of objects.
Manual reference counting is described in Advanced Memory Management Programming Guide.
Garbage collection, where you pass responsibility for determining the lifetime of objects to an automatic “collector.”
Garbage collection is described in Garbage Collection Programming Guide. (Not available for iOS—you cannot access this document through the iOS Dev Center.)