你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS開發(45)之delegate和Notification的區別

IOS開發(45)之delegate和Notification的區別

編輯:IOS開發綜合

delegate針對one-to-one關系,並且reciever可以返回值給sender;

notification 可以針對one-to-one/many/none,reciever無法返回值給sender;

所以,delegate用於sender希望接受到reciever的某個功能反饋值,notification用於通知多個object某個事件。

 


delegate主動,notification被動


1.

Delegate:
消息的發送者(sender)告知接收者(receiver)某個事件將要發生,delegate同意然後發送者響應事件,delegate機制使得接收者可以改變發送者的行為。通常發送者和接收者的關系是直接的一對多的關系。

Notification:
消息的發送者告知接收者事件已經發生或者將要發送,僅此而已,接收者並不能反過來影響發送者的行為。通常發送者和接收者的關系是間接的多對多關系。

2.

很早stepwise上有一篇很經典的文章抓沒講delegate和notificationde的區別的,不過很遺憾現在stepwise下線了。
簡單說,
1. 效率肯定是delegate比nsnotification高。
2. delegate方法比notification更加直接,最典型的特征是,delegate方法往往需要關注返回值,也就是delegate方法的結果。比如-windowShouldClose:,需要關心返回的是yes還是no。所以delegate方法往往包含should這個很傳神的詞。也就是好比你做我的delegate,我會問你我想關閉窗口你願意嗎?你需要給我一個答案,我根據你的答案來決定如何做下一步。相反的,notification最大的特色就是不關心接受者的態度,我只管把通告放出來,你接受不接受就是你的事情,同時我也不關心結果。所以notification往往用did這個詞匯,比如NSWindowDidResizeNotification,那麼nswindow對象放出這個notification後就什麼都不管了也不會等待接受者的反應。

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved