まず、クラスとは何か、クラスの構造とは何かという問いを捨ててください。
前章では、クラスのallocメソッドを探索し、ソースコードを通してクラスのメモリ空間の開放を分析しました。その構造とは?
- クラスとは何ですか??
これを勉強してMRPersonクラスを作成し、clangコマンドを使って.cppファイルにコンパイルします。
main.cppファイルを開いて、ファイルは非常に長いです、コマンド+ Fグローバル検索MRPerson.functionはすることができます)あなたは、次のことができます。
上の図は、MRPersonは構造体の構造型であることがわかる
継続分析
objc_objectとNSObject_IMPLについてはどうですか?
typedef Struct 修飾子のおかげで、.cpp ファイルからグローバルに
その定義には明らかにクラス・タイプisaが含まれているので、このクラスは何なのかという疑問が生じます。
上の7152行目のコードにこの定義があります。typedef struct objc_class *Class; このコード行からよくわかるように、Classはobjc_class構造体へのポインタです。
objc_classとは何でしょうか?
objc_classの定義を見つけるために.cppファイルでこの時間を続けることができない、この時間だけ見つけるためにソースコードにすることができます:ソースコードを開き、ちょうどobjc_objectの定義を見つけるために.cppファイルを介して**objc_class **を見つけるためにobjc.hファイルのソースコードに今すぐ
このような宣言をするには、右クリックして**objc_class**と続けます。
: 上記の2つのジャンプがあり、objc -ランタイム-newファイルを見つけるために、ジャンプをクリックする
objc_classはオブジェクトのクラスを表す構造体なので、NSObjectクラスはそのオブジェクトに対応するクラスを指すobjc_class構造体タイプのisaを含んでいます。
以上の調査の結果、次のように結論づけられます。
クラスの構造とは何ですか
上記は最終的に、一連のルックアップを通してこのような構造を見ています。
まず、objc_classがNSObjectを継承していること、objc_classがジェネリックisaを持っていることがわかります。
isaの内容は、学ぶために別の記事を開く必要があり、次の章を探索し続けることです。





