多くの Objective-C 開発者は、初心者でもエキスパートでid
も、オブジェクトをキャストして古いメッセージを送信しても影響を受けずに (少なくともコンパイラから) 魔法のキャッチオール型であるかのように考えているようです。しかし、実際に の定義を見るとid
、それは へのポインタにすぎませんobjc_object
。このように、これは文字通り「Objective-C オブジェクト」ですが、から「派生」することはできませんid
。NSObject のヘッダーでさえ、次のようには見えません。
@interface NSObject : id
それはただ読む:
@interface NSObject
さて、私はid
の想定される型中立性はその実装の副作用であると固く信じていますが、そうではないと考える人がまだいるので、私は尋ねなければなりません:
型の主な機能は正確には何id
ですか?