0

id Objective-C では、オブジェクト識別子は id という異なるデータ型です。この型は、クラスに関係なくあらゆる種類のオブジェクトの一般的な型であり、クラスのインスタンスおよびクラス オブジェクト自体に使用できます。

id anObject;

ここまでは単純明快


メソッドの戻り値など、Objective-C のオブジェクト指向構造の場合、id はデフォルトのデータ型として int を置き換えます。(関数の戻り値など、厳密に C の構造の場合、int はデフォルトの型のままです。)

id についての話が int に取って代わるものを理解していませんか? 最後の括弧内の int はデフォルト値のままですか?


キーワード nil は null オブジェクト、値 0 の id として定義されます。id、nil、およびその他の Objective-C の基本型は、ヘッダー ファイル objc/objc.h で定義されます。

id は、オブジェクト データ構造へのポインターとして定義されます。

typedef struct objc_object {
    Class isa;
} *id;

上記は obj-c 構文ではありません。それは何で、何を説明しているのでしょうか?


したがって、すべてのオブジェクトには、インスタンスであるクラスを示す isa 変数があります。Class 型自体がポインターとして定義されているため、次のようになります。

typedef struct objc_class *Class;

isa 変数は、しばしば「isa ポインター」と呼ばれます。</p>

この最後の段落も理解できませんでした。

4

2 に答える 2

1

id についての話が int に取って代わるものを理解していませんか?

Objective-C は C のスーパーセットです。

C では、関数には戻り値が必要です。戻り値が指定されていない場合、関数はintデフォルトで戻ります。

Objective-C は、C のこの既定の動作をオーバーライドしid、戻り値を指定しないクラス メソッドから既定値として返します。しかし同時に、他の (C-) 関数のデフォルトの動作は同じintままです (つまり、他のすべてのデフォルトの戻り値のままです)。

于 2012-06-06T08:09:16.670 に答える