KVC 通過 valueForKey: / setValue:forKey: 實現鍵名到屬性/實例變量的動態映射。搜索順序:
get / 方法。_ / _is 實例變量。accessInstanceVariablesDirectly 返回 YES,直接訪問實例變量。NSKVONotifying_OriginalClass)。willChangeValueForKey: 與 didChangeValueForKey: 發送通知。isa 指向新子類,實現透明攔截。覆寫 +keyPathsForValuesAffectingValueForKey: 聲明衍生屬性依賴,自動觸發相關觀察。
若需繞過自動機制,可手動調用 willChangeValueForKey: / didChangeValueForKey:。
dealloc 中必須移除)。dealloc 中移除所有觀察。context 區分多觀察場景,避免父類衝突。