タイトルにもあるように、少し混乱していますが、
id
Objective Cはプリミティブデータ型ですか? またはオブジェクトタイプ?id
オブジェクトを指しているので、私はいつもオブジェクト型だと思っていました。
それで、それはオブジェクト型ですか、それともプリミティブデータ型ですか?
タイトルにもあるように、少し混乱していますが、
id
Objective Cはプリミティブデータ型ですか? またはオブジェクトタイプ?id
オブジェクトを指しているので、私はいつもオブジェクト型だと思っていました。
それで、それはオブジェクト型ですか、それともプリミティブデータ型ですか?
間違いなくプリミティブ型ではありません。アップル より:
Objective-C では、オブジェクト識別子は id という異なるデータ型です。この型は、クラスに関係なくあらゆる種類のオブジェクトの一般的な型であり、クラスのインスタンスおよびクラス オブジェクト自体に使用できます。
id
objc.hで次のように宣言されています
typedef struct objc_object {
Class isa;
} *id;
そうです、それはプリミティブだと思います(ポインターはCのプリミティブ型です)。
Objective-Cの「id」はプレーンな「c」のvoidポインタに似たタイプだと思います。ポインタはプリミティブであるため、「id」は確かにプリミティブ型であると思います。