通过类名与self调用类方法

时间:2012-04-29 05:30:55

标签: objective-c class-method

假设我们有一个名为Calculator的类。其中有一个类方法,称为runProgram。 如果我想调用这个类方法,在类的实现中,这两者之间的区别是:

[Calculator runProgram]

OR

[self runProgram]

这两者是否相同?

1 个答案:

答案 0 :(得分:32)

如果在实例方法中:

[self runProgram]

在此,self表示对象实例本身,因此它将生成运行时错误。你想用

[[self class] runProgram]

代替。

但是,如果从另一个类方法调用此方法,则

[self runProgram]

是正确的,因为现在self指的是类本身。我不鼓励使用

[Calculator runProgram]

因为类的子类会错误地调用超类'(Calculator')方法而不是可能被重写的方法。