1

classクラス オブジェクトにメッセージを送信するのではなく、その名前でクラス オブジェクトを指定できると便利です。ランタイムはすでにidクラスの内容を認識しているのに、毎回メッセージを送信してこれを取得する必要があるのはなぜでしょうか?

私の推測では、これによって実際にメッセージが送信されないように、コンパイラが最適化します。

構文がこのようでなければならない理由を説明する正当な理由 (私が探している) があるに違いありません。

4

1 に答える 1

0

クラス名は型です。オブジェクトはその型へのポインタです。また、tpye だけを値として使用することはできません (定数、変数、式など、使用したいものは何でも...)。もしそれがあなたにとって不便であるなら (うーん、そうじゃないはずです!)、いくつかの回避策を考え出すことができます: 例えば、短いマクロを定義します:

#define C(name) [name class]

また

#define C(name) objc_getClass(#name)

お役に立てれば。

于 2012-06-16T05:18:57.963 に答える