2009-04-25 4 views
3

誰かが私は、このISAインスタンスについて知っておくべきかを説明することができます変数?それは何のために良いですか?どういう意味ですか? DIN、ISOなどの標準のように聞こえます。それは何ですか?isaインスタンス変数とは何ですか?彼らは</p> <blockquote> <p>がクラス</p> </blockquote> <p>を記述するデータ構造に初期化され、「ISAインスタンス変数」について話NSObjectのクラスリファレンスで

答えて

7

これは、クラスの継承パスを決定するために使用されます。より正式に:

新しいオブジェクトが作成されると、そのオブジェクトはメモリ空間に割り当てられ、そのインスタンス変数の形式でデータが初期化されます。すべてのオブジェクトには、オブジェクトのクラスを参照するように初期化されたisaというインスタンス変数(NSObjectから継承)が少なくとも1つあります。この参照によって、オブジェクトの継承パス内のクラスにアクセスすることもできます。

犬IS-哺乳類: - Objective-C GNUstep Base Programming Manual: Objective-C

名前isaは、このような2つのオブジェクト間の関係は単純であるIS-AのOOPの概念から来ています。
車のIS-A車。

それはIS-A関係、あなたのクラスが継承階層にあるものを伝えることができますようにそうisaインスタンス変数を参考にすることができます。

6

これは基本的にオブジェクトのクラスへのポインタで、Objective-Cランタイムの基になっています。ランタイムは、それを使用してオブジェクトメソッドディスパッチテーブルとクラス構造に格納されているものを取得します。すべてのObjective-Cオブジェクトには唯一のことがあります。

ほとんどの場合、完全に無視することができます。

関連する問題