Retired Document
Important: This document may not represent best practices for current development. Links to downloads and other resources may no longer be valid.
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).
Copyright © 2018 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2018-04-06