0

为什么在 Obj-c 中不能让 self 引用当前类?你不能这样做有什么特殊原因吗?还是有可能以某种方式做到这一点?

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

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

4

2 回答 2

7

selfin[self doStuff]指示您正在调用该方法的目标对象。在您的目标以外的目标上调用方法是完全明智的(事实上,非常常见)self

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

self恰好是这样一个目标。

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

于 2013-06-09T01:12:12.510 回答
4

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.

于 2013-06-09T04:50:50.467 回答