Compiler and Preprocessor Directives

Compiler and preprocessor directives are special terms in your program that tell the compiler to perform some Objective-C-specific action. All compiler directives start with the character @, and preprocessor directives start with #.

Class Declarations and Definitions

The following compiler directives are used to begin or conclude the declaration and definition of Objective-C classes, categories, and protocols:


Begins the declaration of a class’s or category’s fields and methods.


Begins the declaration of a protocol’s methods.


Begins the definition of a class’s methods.


Ends the declaration or definition of a class’s, category’s, or protocol’s methods.

The use of these compiler directives is described in detail under Section 1.3, and especially in the subsections Section 1.3.2, Section 1.3.6, and Section 1.3.7.

Forward Declarations

The following compiler directives generate forward declarations, informing the compiler that a type exists:

@class ClassName

Forward declaration of a class.

@protocol ProtocolName

Forward declaration of a protocol.

Use forward declarations when an interface uses variables (fields or method parameters or return types) of a given type. Rather than import the header file for that type, you can simply forward reference it. For example:

               Circle : Graphic {
  Point* center;
  // etc.

This is sufficient because the declaration of Circle does not use any details ...

Get Objective-C Pocket Reference now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.