//聯(lián)系人:石虎QQ: 1224614774昵稱:嗡嘛呢叭咪哄
一、delegate的效率肯定比NSNotification高.
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對象放出這個(gè)notification后就什么都不管了也不會(huì)等待接受者的反應(yīng)。
二、KVO和NSNotification的區(qū)別:
1)和delegate一樣,KVO和NSNotification的作用也是類與類之間的通信,與delegate不同的是:這兩個(gè)都是負(fù)責(zé)發(fā)出通知,剩下的事情就不管了,所以沒有返回值;
2)delegate只是一對一,而這兩個(gè)可以一對多。這兩者也有各自的特點(diǎn)。