Mil*_*lad 18 objective-c class-method
假设我们有一个名为的类Calculator.其中有一个类方法,叫做runProgram.如果我想调用这个类方法,在类的实现中,这两者之间的区别是:
[Calculator runProgram]
Run Code Online (Sandbox Code Playgroud)
要么
[self runProgram]
Run Code Online (Sandbox Code Playgroud)
这两个都一样吗?
小智 33
如果在实例方法中:
[self runProgram]
Run Code Online (Sandbox Code Playgroud)
在这里,self表示对象实例本身,因此它将生成运行时错误.你想用
[[self class] runProgram]
Run Code Online (Sandbox Code Playgroud)
代替.
但是,如果从另一个类方法调用此方法,则
[self runProgram]
Run Code Online (Sandbox Code Playgroud)
是正确的,因为现在self指的是类本身.我不鼓励使用
[Calculator runProgram]
Run Code Online (Sandbox Code Playgroud)
因为那么类的子类会错误地调用超类'(Calculator's)方法而不是可能被重写的方法.
| 归档时间: |
|
| 查看次数: |
24072 次 |
| 最近记录: |