Objective-C
なんだかんだ知っておかないとできないことが多いので。それに Swift からも Obj-C の機能利用することがあるし...
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008048-CH1-SW1
Programming with Objective-C
Objective-C 言語は、コンパイル時及びリンク時から実行時まで、多くの決定を 遅延 させる
可能な限り決定は 動的に 行われる
従って、Objective-C はコンパイラだけではなく、コンパイル済みのコードの実行のためのランタイムシステムも必要となる
ランタイムシステムは、Objective-C 言語のための OS のように動作する
maxOS のランタイムライブラリについて
https://developer.apple.com/documentation/objectivec/objective-c_runtime
Objective-C ランタイム Framework について
https://developer.apple.com/documentation/objectivec
Objective-C ランタイムプログラミングガイド
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008048-CH1-SW1
Objective-C プログラミングガイド
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html#//apple_ref/doc/uid/TP30001163-CH1-SW2
Objective-C の歴史シリーズ
https://qiita.com/szktty/items/b3b332d43b2e003f47d4
概要
macOS, iOS アピを書くときに使う
C言語のスーパーセット
プリミティブ型, シンタックス, フロー制御構文は引き継いでいる
オブジェクト指向 (クラス, メソッド定義構文), 動的ランタイム (Objective-C Runtime) を新たに追加
オブジェクトグラフ管理, オブジェクトリテラル?
Programming with Objective-C
既存のクラスの拡張
色々方法があるようだ。
Category
対象のソースコードを自分で管理していない場合にも拡張できる
Class extension
対象のソースコードを自分で管理していて、かつ単一ファイル内や Framework 内などに private に保ちたい場合
実際に書き換える
対象のソースコードを自分で管理しているなら書き換えれば良い
KVO, KVC
プロパティ属性
table:プロパティ属性
属性名 意味
readonly setter を作らない
readwrite setter, getter を両方作成する
assign
http://south37.hatenablog.com/entry/2014/07/06/Objctive-Cにおけるweak参照の使いどころって分かりづらい