runtime内部実装メカニズム

1248 ワード

  • 1、何ですか.runtime:ランタイムメカニズム
  • 1.1 runtimeは下位層のC言語を比較するAPIであり、C言語ライブラリに属し、多くの下位層のC言語APIを含む.
  • 普段書いたOCコードは、プログラムの実行は最終的にruntimeの中のC言語コードに転換し、runtimeがOCの背後工作者であることを説明し、OCコードの実現はruntimeの中のC言語コードを呼び出すことである.
  • 1.3例
  • [[MJPerson alloc] init];
    runtime:
    objc_msgSend(objc_msgSend(“MJPerson”, “alloc”), “init”);
    
  • 2、使ったことがありますか.どうやって使いますか.runtimeはOCの下位層に属し、いくつかの非常に下位層の操作を行うことができる(OCでは実現しにくい)
  • 2.1プログラムの実行中に、動的にクラス(例えば、KVOの下位実装、KVCの下位実装もruntimeメカニズム)
  • を作成する.
  • 2.2プログラムの実行中に、あるクラスに属性(メンバー変数)/メソッドを動的に追加し、属性(メンバー変数)/メソッドを変更する
  • .
  • 2.3クラスのすべての属性(メンバー変数)/メソッド
  • を巡回する
  • 3、関連するメソッドおよびヘッダファイル
  • 3.1ヘッダファイル
  • 3.1.1
  • 3.1.2

  • 3.2関連アプリケーション
  • 3.2.1 NSCoding(アーカイブとアーカイブ)
  • 3.2.2ディクショナリ---->モデル(runtimeを使用してモデルオブジェクトのすべての属性を遍歴し、属性名に基づいてディクショナリから対応する値を取り出し、モデルの属性に設定)
  • 3.2.3 KVO(runtimeを用いてクラスを動的に生成)
  • 3.2.4パッケージング用フレーム(実行時に、どのように変更したいか、どのように変更するか)
  • 3.3相関関数
  • 3.3.1 objc_msgSend:オブジェクトにメッセージを送信する
  • 3.3.2 class_copyMethodList:あるクラスを巡るすべての方法
  • 3.3.3 class_copyIvarList:あるクラスのすべてのメンバー変数(属性)
  • を巡回する
  • 3.3.4 class_...一連の方法
  • 3.4必須常識1)Ivar:メンバー変数Method:メンバーメソッド