Notifications vs Delegates

最近一直在忙著準備暑期的實習面試,所以最近開始復習OC基礎知識。偷得半日閑,總結下面試考濫了的delegate和notification。

此兩君的不同主要體現在以下兩個方面:

代碼耦合性

Notifications: “一對多”,松耦合
這是因為,發送notification的對象并不知道誰需要這個notification。松耦合帶來的好處是可以用notification實現“一對多”的功能,讓許多不同的對象能夠監聽相同的notification;壞處是會給debug帶來不便,因為一旦發送notification的對象做出了改變,會影響到所有監聽此notification的對象。debug起來將會是相當痛苦的一件事。

Delegates: “一對一”,緊耦合
這是因為, delegating 對象具有其 delegate 的直接引用(例如:_tableView.delegate = self; 這里_tableView是delegating對象,self是delegate對象)。所以delegating對象知道是否有delegate對象,并且可以通過內省(introspection)方式知道它的delegate實現了哪些方法。

數據流向

Notifications: 單方向
Notification 是一個主動的過程,只負責發送出某個信息。并不關心接收者是誰。

Delegates: 雙方向
在Delegates模式中,數據可以從delegating流向delegate ,也可以從delegate流向delegating。這里最典型的就是tableView的情況了,在tableView中,dataSource就是一個數據從delegate流向delegating的過程,delegate就是數據從delegating流向delegate的過程。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,205評論 30 471
  • 37.cocoa內存管理規則 1)當你使用new,alloc或copy方法創建一個對象時,該對象的保留計數器值為1...
    如風家的秘密閱讀 887評論 0 4
  • 1.Difference between shallow copy and deep copy? 淺復制和深復制的...
    用心在飛閱讀 1,023評論 0 9
  • iOS網絡架構討論梳理整理中。。。 其實如果沒有APIManager這一層是沒法使用delegate的,畢竟多個單...
    yhtang閱讀 5,251評論 1 23
  • 今天,和幾位同學一起回家,路上看到了初中的老師,剛剛步入高中的我心里還有點小激動,我們幾個向老師問了聲好便聊了起...
    兲箜2001閱讀 162評論 0 1