NSNotification仰挣、delegate和KVO優(yōu)缺點(diǎn)對(duì)比

Copyright ? 2017年ZaneWangWang. All rights reserved.

一.Delegate(代理)

1).優(yōu)勢(shì):

a.有非常嚴(yán)格的語法,所有觸發(fā)代理的方法在代理中有清晰的定義

b.如果代理中的一個(gè)必要方法沒有實(shí)現(xiàn)會(huì)出現(xiàn)編譯警告

c.整個(gè)觸發(fā)和調(diào)用的控制流程可跟蹤并且可識(shí)別,通信過程清晰明了

2).缺點(diǎn)

a.需要定義很多代碼:協(xié)議定義麸拄;遵循代理的delegate屬性;在遵循delegate對(duì)象實(shí)現(xiàn)中實(shí)現(xiàn)delegate方法定義

b.在釋放代理對(duì)象時(shí)实柠,需要小心的將delegate改為nil橱脸。一旦設(shè)定失敗抒和,那么調(diào)用釋放對(duì)象的方法將會(huì)出現(xiàn)內(nèi)存crash

二.NSNotification(通知)

1).優(yōu)勢(shì):

a.不需要編寫多少代碼膳沽,實(shí)現(xiàn)比較簡(jiǎn)單汗菜;

b.對(duì)于一個(gè)發(fā)出的通知,多個(gè)對(duì)象能夠做出反應(yīng)挑社,即1對(duì)多的方式實(shí)現(xiàn)簡(jiǎn)單

c.發(fā)送通知的時(shí)候可以傳遞context對(duì)象(dictionary)陨界,context對(duì)象攜帶了關(guān)于發(fā)送通知的自定義的信息

2).缺點(diǎn):

a.在編譯期不會(huì)檢查通知是否能夠被觀察者正確的處理;

b.在釋放注冊(cè)的對(duì)象時(shí)痛阻,需要在通知中心取消注冊(cè)菌瘪;

c.在調(diào)試的時(shí)候應(yīng)用的工作以及控制過程難跟蹤;

d.通知發(fā)出后阱当,不能從觀察者獲得任何的反饋信息俏扩。

三.KVO(鍵值監(jiān)聽)

1).優(yōu)勢(shì):

a.能夠提供一種簡(jiǎn)單的方法實(shí)現(xiàn)兩個(gè)對(duì)象間的同步。例如:model和view之間同弊添;

b.能夠?qū)Ψ俏覀儎?chuàng)建的對(duì)象录淡,即內(nèi)部對(duì)象的狀態(tài)改變作出響應(yīng),而且不需要改變內(nèi)部對(duì)象(SKD or 對(duì)象)的實(shí)現(xiàn)油坝;

c.能夠提供觀察的屬性的最新值以及先前值嫉戚;

d.用key paths來觀察屬性,因此也可以觀察嵌套對(duì)象免钻;

e.完成了對(duì)觀察對(duì)象的抽象彼水,因?yàn)椴恍枰~外的代碼來允許觀察值能夠被觀察

2).缺點(diǎn):

a.我們觀察的屬性必須使用strings來定義。因此在編譯器不會(huì)出現(xiàn)警告以及檢查

b.對(duì)屬性重構(gòu)將導(dǎo)致我們的觀察代碼不再可用

總結(jié):

1.效率肯定是delegateNSNotification高极舔。

delegate方法比notification更加直接凤覆,最典型的特征是,delegate方法往往需要關(guān)注返回值拆魏,也就是delegate方法的結(jié)果盯桦。比如-windowShouldClose:慈俯,需要關(guān)心返回的是yes還是no。所以delegate方法往往包含should這個(gè)很傳神的詞拥峦。也就是好比你做我的delegate贴膘,我會(huì)問你我想關(guān)閉窗口你愿意嗎?你需要給我一個(gè)答案略号,我根據(jù)你的答案來決定如何做下一步刑峡。相反的,notification最大的特色就是不關(guān)心接受者的態(tài)度玄柠,我只管把通告放出來突梦,你接受不接受就是你的事情,同時(shí)我也不關(guān)心結(jié)果羽利。所以notification往往用did這個(gè)詞匯宫患,比如NSWindowDidResizeNotification,那么NSWindow對(duì)象放出這個(gè)notification后就什么都不管了也不會(huì)等待接受者的反應(yīng)这弧。

2娃闲、KVONSNotification的區(qū)別:

和delegate一樣,KVO和NSNotification的作用也是類與類之間的通信匾浪,與delegate不同的是這兩個(gè)都是負(fù)責(zé)發(fā)出通知皇帮,剩下的事情就不管了,所以沒有返回值户矢;delegate只是一對(duì)一玲献,而這兩個(gè)可以一對(duì)多。這兩者也有各自的特點(diǎn)梯浪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瓢娜,隨后出現(xiàn)的幾起案子挂洛,更是在濱河造成了極大的恐慌,老刑警劉巖眠砾,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虏劲,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡褒颈,警方通過查閱死者的電腦和手機(jī)柒巫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谷丸,“玉大人堡掏,你說我怎么就攤上這事∨偬郏” “怎么了泉唁?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵鹅龄,是天一觀的道長。 經(jīng)常有香客問我亭畜,道長扮休,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任拴鸵,我火速辦了婚禮玷坠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘劲藐。我一直安慰自己侨糟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布瘩燥。 她就那樣靜靜地躺著秕重,像睡著了一般。 火紅的嫁衣襯著肌膚如雪厉膀。 梳的紋絲不亂的頭發(fā)上溶耘,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音服鹅,去河邊找鬼凳兵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛企软,可吹牛的內(nèi)容都是我干的庐扫。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼仗哨,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼形庭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起厌漂,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤萨醒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后苇倡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體富纸,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年旨椒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晓褪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡综慎,死狀恐怖涣仿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寥粹,我是刑警寧澤变过,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布埃元,位于F島的核電站,受9級(jí)特大地震影響媚狰,放射性物質(zhì)發(fā)生泄漏岛杀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一崭孤、第九天 我趴在偏房一處隱蔽的房頂上張望类嗤。 院中可真熱鬧,春花似錦辨宠、人聲如沸遗锣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽精偿。三九已至,卻和暖如春赋兵,著一層夾襖步出監(jiān)牢的瞬間笔咽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國打工霹期, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叶组,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓历造,卻偏偏與公主長得像甩十,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吭产,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容