1日30分英語

習慣化するために

P1-61 Objective-Cのエンジン部 ランタイムに踏み込む

"Pro Objective-C Design Patterns for iOS" がしんどいので "Dynamic Objective-C" を読み始めることにしました。前者はライフワーク的に思い出したら読む感じにします。

  • CocoaとObjective-Cと動的なオブジェクト指向
    • class-dumpでframeworkのクラスとメソッドが見れる
  • Objective-Cの動的型付け
  • Cocoa実現の肝 クラスとそのメソッドの調査方法をチェック
    • NSClassFromString
  • ターゲットーアクションパラダイム - 動的特性を利用したデザインパターン
    • メソッドの有無もターゲットの特性
  • ターゲットーアクションパラダイム - その利点を徹底検証
  • Cocoa-Javaの挑戦とは?
  • Objective-Cと様々な言語のブリッジ - PyObjC, RubyCocoa
  • カテゴリ
  • プロトコルが必要とされた背景
    • プロセス間通信ではプロトコルにて通信のエンコードを知っておいた方がパフォーマンスがよい
  • 非形式プロトコル
    • NSObjectのカテゴリとして宣言する
  • 2つのプロトコルの使い分け
    • 本書では形式プロトコルはすべてメソッドを実装するのを求められるから、デリゲートでは非形式の方を使う、と書いてあったが、Objective-C2.0からは@Optionalが使える
  • ポージングで乗っ取り
    • 使ったことがない。危なそう。便利なことができそうな気はする
  • Objective-Cのエンジン部 ランタイムに踏み込む
  • クラスとは何か
    • Class型は構造体objc_classのポインタ
    • すべてのクラス名を取得する int objc_getClassList(Class* buffer, int bufferLen);
    • メタクラス
    • id型とは構造体objc_objectのポインタ
      • isaをメンバーに持つ
      • インスタンスオブジェクトを確保するとこのisaの下にインスタンス変数の為のメモリが確保される
      • オブジェクトとは「クラス定義であるisaフィールドで始まり、インスタンス変数の為のメモリ領域を持つもの」
      • クラスもisaを持つのでクラスオブジェクトとして扱える

めちゃくちゃ面白いですね。クラスもオブジェクトも構造体だったとか。
そして本文の文体がいいですね。元がWeb連載だったからか語りかける文章で、ワクワクさせてくれます。

Dynamic Objective-C

Dynamic Objective-C