为什么在Obj-c中不能让自己引用当前的类?

时间:2013-06-09 00:56:36

标签: objective-c self

为什么在Obj-c中不能让自己引用当前的类?有什么特别的理由让你不能这样做吗?或者有可能以某种方式做到这一点?

我试图理解在对象中使用self的原因。如果我输入[self runMethod];,那么我正在引用类本身所在的类中的方法,那么使用self关键字有什么意义呢?为什么不让我放[runMethod];

所以我猜测为什么需要self关键字有一些根本原因?

2 个答案:

答案 0 :(得分:7)

self中的[self doStuff]表示您正在调用方法的目标对象。在self以外的目标上调用方法是完全合理的(事实上,非常常见):

NSObject *obj = ...
[obj doStuff];

self恰好就是这样一个目标。

从语言设计的角度来看:可以想象[doStuff]可以成为[self doStuff]的简写,但这将是一个非常奇怪的特殊情况(这可能会导致一些语法模糊!) ,这没有必要。

答案 1 :(得分:4)

除了duskwuff的答案,这很好,我想注意这是不正确的:

  

如果我输入[self runMethod];,那么我正在引用该行本身所在的类中的方法,那么使用self关键字有什么意义呢?

当您发送消息self时,您可以调用子类中的方法,而不一定是实现消息传递的类。与您的问题没有直接关系,但需要理解的重要区别。