为什么在 Obj-c 中不能让 self 引用当前类?你不能这样做有什么特殊原因吗?还是有可能以某种方式做到这一点?
我试图了解在对象中使用 self 的原因。如果我键入[self runMethod];
,那么我指的是行本身所在的类中的方法,那么使用 self 关键字有什么意义呢?为什么不让我放[runMethod];
?
所以我猜想为什么需要 self 关键字有一些根本原因?
为什么在 Obj-c 中不能让 self 引用当前类?你不能这样做有什么特殊原因吗?还是有可能以某种方式做到这一点?
我试图了解在对象中使用 self 的原因。如果我键入[self runMethod];
,那么我指的是行本身所在的类中的方法,那么使用 self 关键字有什么意义呢?为什么不让我放[runMethod];
?
所以我猜想为什么需要 self 关键字有一些根本原因?
self
in[self doStuff]
指示您正在调用该方法的目标对象。在您的目标以外的目标上调用方法是完全明智的(事实上,非常常见)self
:
NSObject *obj = ...
[obj doStuff];
self
恰好是这样一个目标。
从语言设计的角度来看:[doStuff]
可以将其做成 的简写[self doStuff]
,但它会是一个非常奇怪的特殊情况(这可能会导致一些语法歧义!),并且没有必要。
In addition to duskwuff's answer, which is good, I want to note that this is incorrect:
If I type
[self runMethod];
then I'm refering to method in the class that the line itself is in, so what is the point of using the self keyword?
When you message self
, you may invoke a method in a subclass, not necessarily the class whose implementation did the messaging. Not directly relevant to your question, but an important distinction to understand.