kvo和runtime有著密不可分的關系
- 當你第一次觀察某個object 時,runtime會創建一個新的繼承原先class的subclass。在這個新的class中,它重寫了所有被觀察的key,然后將object的isa
指針指向新創建的class(這個指針告訴Objective-C運行時某個object到底是哪種類型的object)。所以object神奇地變成了新的子類的實例。 - 重寫set方法
當改變一個key時,會觸發setKey方法,但這個方法被重寫了,并且在內部添加了發送通知機制。例如willChange和changed