區別一:
delegate
:
針對one-to-one(一對一)關系,并且接收者(receiver)可以返回值給發送者(sender);
Notification
:
可以針對one-to-one/many/none,reciever無法返回值給發送者(sender);
所以,delegate
用于發送者(sender)希望接受到接收者(receiver)的某個功能反饋值,Notification
用于通知多個object
某個事件。
區別二:
delegate
:
消息的發送者(sender)告知接收者(receiver)某個事件將要發生,delegate同意然后發送者響應事件,delegate
機制使得接收者可以改變發送者的行為。通常發送者和接收者的關系是直接的一對多的關系。
Notification
:
消息的發送者告知接收者事件已經發生或者將要發送,僅此而已,接收者并不能反過來影響發送者的行為。通常發送者和接收者的關系是間接的多對多關系。
區別三:
效率肯定是delegate
比Notification
高。
區別四:
delegate
方法比Notification
更加直接,最典型的特征是,delegate方法往往需要關注返回值,也就是delegate方法的結果。
delegate
用于聲明委托。Notification
用于通告。
委托是一種引用類型,引用類型的 Shared 方法或對象的實例方法。任何具有匹配參數類型和返回類型的過程均可用來創建此委托類的實例。然后就可以通過委托實例來調用過程。
GitHub: https://github.com/LiCheng244/LCUtils
個人博客: http://www.licheng244.com/