溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

iOS 代理與通知,kvc和kvo的區(qū)別

發(fā)布時間:2020-07-08 04:47:22 來源:網(wǎng)絡(luò) 閱讀:752 作者:大頭狼小鬼 欄目:移動開發(fā)

通知

通知需要有一個通知中心:NSNotificationCenter,自定義通知的話需要給一個名字,然后監(jiān)聽。

優(yōu)點:通知的發(fā)送者和接受者都不需要知道對方??梢灾付ń邮胀ㄖ木唧w方法。通知名可以是任何字符串。

缺點:較鍵值觀察(KVO)需要多點代碼,在刪掉前必須移除監(jiān)聽者。

協(xié)議

通過setDelegate來設(shè)置代理對象,最典型的例子是常用的TableView.

優(yōu)點:支持它的類有詳盡和具體信息。

缺點:該類必須支持委托。某一時間只能有一個委托連接到某一對象。

KVO 的優(yōu)點:
 
當有屬性改變,KVO 會提供自動的消息通知。這樣開發(fā)人員不需要自己去實現(xiàn)這樣的方案:每次屬性改變了就發(fā)送消息通知。

這是 KVO 機制提供的最大的優(yōu)點。因為這個方案已經(jīng)被明確定義,獲得框架級支持,可以方便地采用。

開發(fā)人員不需要添加任何代碼,不需要設(shè)計自己的觀察者模型,直接可以在工程里使用。

其次,KVO 的架構(gòu)非常的強大,可以很容易的支持多個觀察者觀察同一個屬性,以及相關(guān)的值。

KVC 的實現(xiàn)分析

KVC 運用了一個 isa-swizzling 技術(shù)。

isa-swizzling 就是類型混合指針機制。KVC 主要通過 isa-swizzling,來實現(xiàn)其內(nèi)部查找定位的。

isa 指針,就是 is a kind of 的意思,指向維護分發(fā)表的對象的類。該分發(fā)表實際上包含了指向?qū)崿F(xiàn)類中的方法的指針和其它數(shù)據(jù)。

http://www.isaced.com/post-201.html

http://blog.csdn.net/ajrm0925/article/details/7416419


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

ios
AI