Class method

A class method is a method that operates on class objects rather than instances of the class. In Objective-C, a class method is denoted by a plus (+) sign at the beginning of the method declaration and implementation:

+ (void)classMethod;

To send a message to a class, you put the name of the class as the receiver in the message expression:

[MyClass classMethod];

Subclasses

You can send class messages to subclasses of the class that declared the method. For example, NSArray declares the class method array that returns a new instance of an array object. You can also use the method with NSMutableArray, which is a subclass of NSArray:

NSMutableArray *aMutableArray = [NSMutableArray array];

In this case, the new object is an instance of NSMutableArray, not NSArray.

Instance Variables

Class methods can’t refer directly to instance variables. For example, given the following class declaration:

@interface MyClass : NSObject {
    NSString *title;
}
+ (void)classMethod;
@end

you cannot refer to title within the implementation of classMethod.

self

Within the body of a class method, self refers to the class object itself. You might implement a factory method like this:

+ (id)myClass {
    return [[[self alloc] init] autorelease];
}

In this method, self refers to the class to which the message was sent. If you created a subclass of MyClass:

@interface MySubClass : MyClass {
}
@end

and then sent a myClass message to the subclass:

id instance = [MySubClass myClass];

at runtime, within the body of the myClass method, self would refer to the MySubClass class (and so the method would return an instance of the subclass).

Prerequisite Articles

    (None)

Related Articles

Definitive Discussion