1. 程式人生 > >iOS-螞蟻金服面試題(一)

iOS-螞蟻金服面試題(一)

原文首發地址
洲洲哥整理提供,有些地方說的不準確的地方還希望各位看官指正!

下面進入整體
1:在KVO中,他是怎麼知道監聽的物件發生了變化?

KVO簡單介紹

中文名稱:觀察者

功能描述:

是一個第三者的觀察方,在不改變被觀察物件任何屬性的情況下,監聽屬性和物件的改變。並有自己的功能函式去處理。

特性:方便好、好用、容易遺漏移除問題。

原理理解:這是我在網上看的最靠譜的理解了

當某個類的物件第一次被觀察時,系統就會在執行期動態的建立該類的一個派生類,在這個派生類中重寫基類中的任何被觀察屬性的setter方法。
派生類在被重寫的setter方法實現真正的通知機制,就如前面手動實現鍵值觀察那樣,這麼做事基於設定屬性會呼叫setter方法,而通過重寫就獲得了KVO需要的通知機制。當然前提是要通過遵循KVO的屬性設定方法來變更屬性值,如果僅僅是直接修改屬性對應的成員變數,是無線實現KVO的。

同時派生類還重寫了class方法以“騙取”外部呼叫者他就是起初的那個類。然後系統將這個物件的isa指標指向這個新誕生的派生類,因此這個物件就成為該派生類的物件,因而在該物件上對setter的呼叫就會呼叫重寫的setter,從而啟用鍵值通知機制。此外。派生類還重寫的dealloc方法來釋放資源。

總結

不要懵逼,不要害怕。上面可以解釋了

​如有問題可新增我的QQ:1290925041
還可新增QQ群:234812704(洲洲哥學院)
歡迎各位一塊學習,提高逼格!
也可以新增洲洲哥的微信公眾號

更多訊息

更多信iOS開發資訊 請以關注洲洲哥 的微信公眾號,不定期有乾貨推送:

這裡寫圖片描述