类方法是在类对象(而不是类实例)中活动的方法。Objective-C在方法声明和实现开头添加一个加号(+ )以标示类方法。
如需向某个类发送消息,则应把类名称作为消息表达式的接收者:
子类
如果一个类声明了某个方法,则您可将相同的类消息发送给其子类。举个例子,NSArray
array
类方法,此方法返回一个新的数组实例对象。由于NSMutableArray
是NSArray的子类,因此您也可以向其发送array
消息:
本例中,新对象是NSMutableArray
的实例而非NSArray的实例。
实例变量
类方法不能直接引用实例变量。举个例子,对于如下的类声明:
您不能在classMethod
实现中使用title
变量。
self
在类方法的实现中, self
指涉类对象本身。您可能会实现如下的工厂方法:
在该方法中,self
指涉接受消息的类。如果您创建一个MyClass
的子类:
然后向它发送myClass
消息:
而在运行时,myClass
方法中的self
指涉MySubClass
类,因此方法返回一个子类的实例。