objective-c 类方法

类方法是在类对象(而不是类实例)中活动的方法。Objective-C在方法声明和实现开头添加一个加号(+ )以标示类方法。

+ (void)classMethod;

如需向某个类发送消息,则应把类名称作为消息表达式的接收者:

[MyClass classMethod];

子类

如果一个类声明了某个方法,则您可将相同的类消息发送给其子类。举个例子,NSArray 声明了array类方法,此方法返回一个新的数组实例对象。由于NSMutableArray是NSArray的子类,因此您也可以向其发送array消息:

NSMutableArray *aMutableArray = [NSMutableArray array];

本例中,新对象是NSMutableArray的实例而非NSArray的实例。

实例变量

类方法不能直接引用实例变量。举个例子,对于如下的类声明:

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

您不能在classMethod实现中使用title变量。

self

在类方法的实现中, self指涉类对象本身。您可能会实现如下的工厂方法:

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

在该方法中,self指涉接受消息的类。如果您创建一个MyClass的子类:

@interface MySubClass : MyClass {
}
@end

然后向它发送myClass消息:

id instance = [MySubClass myClass];

而在运行时,myClass方法中的self指涉MySubClass类,因此方法返回一个子类的实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值