0

Obj-c で現在のクラスを参照するために自分自身を残すことができないのはなぜですか? それができない特別な理由がありますか?とにかく何とかそれを行うことは可能ですか?

オブジェクトで self を使用する理由を理解しようとしています。入力[self runMethod];すると、行自体が含まれているクラスのメソッドを参照しているので、self キーワードを使用するポイントは何ですか? なぜ私が置くことを許可しないの[runMethod];ですか?

だから、self キーワードが必要な根本的な理由があると思いますか?

4

2 に答える 2

7

selfinは[self doStuff]、メソッドを呼び出すターゲット オブジェクトを示します。あなた以外のターゲットでメソッドを呼び出すことは完全に賢明です(実際、非常に一般的です)self

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

selfたまたまそのようなターゲットの 1 つです。

言語設計の観点から: を[doStuff]省略形にすることは考えられ[self doStuff]ますが、かなり奇妙な特殊なケース (構文上のあいまいさにつながる可能性があります!) であり、必要ではありません。

于 2013-06-09T01:12:12.510 に答える
4

良いduskwuffの答えに加えて、これは間違っていることに注意したい:

入力[self runMethod];すると、行自体が含まれているクラスのメソッドを参照しているので、self キーワードを使用するポイントは何ですか?

にメッセージを送信するときは、サブクラスselfでメソッドを呼び出すことができますが、その実装がメッセージを送信したクラスである必要はありません。あなたの質問には直接関係ありませんが、理解すべき重要な違いです。

于 2013-06-09T04:50:50.467 に答える