The base unit of activity in all object-oriented languages is the
entity that associates data with operations that can be performed on
that data. Objective-C provides a distinct data type,
id, defined as a pointer
to an object’s data that allows you to work with
objects. An object may be declared in code as follows:
For all object-oriented constructs of Objective-C, including method
id replaces the default C
int as the default return data type.
id type is completely nonrestrictive. It says
very little about an object, indicating only that it is an entity in
the system that can respond to messages and be queried for its
behavior. This type of behavior, known as dynamic
, allows the system to find the class to
which the object belongs and resolve messages into method calls.
This declaration will turn on some degree of compile time checking to
generate warnings when a type mismatch is made, as well as when you
use methods not implemented by a class. Static typing can also
clarify your intentions to other developers who have access to your
source code. However, unlike other languages’ use of
the term, static typing in Objective-C is used only at compile time.
At runtime, all objects are treated as type
preserve dynamism in the system.