23

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

[Calculator runProgram]

或者

[self runProgram]

这两个是一样的吗?

4

1 回答 1

39

如果在实例方法中:

[self runProgram]

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

[[self class] runProgram]

反而。

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

[self runProgram]

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

[Calculator runProgram]

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

于 2012-04-29T05:36:27.463 回答