代理delegate. NSNotifiction. Block.KVO的區(qū)別

代理

  • 代理是一對一的關(guān)系.
  • delegate 需要定義協(xié)議方法并且實現(xiàn)協(xié)議方法,會使代碼結(jié)構(gòu)變復(fù)雜.
  • delegate 的執(zhí)行效率沒有Block的高.

Block

  • 代碼結(jié)構(gòu)更加緊湊,不需要額外定義方法.
  • 需要注意防止循環(huán)引用,使用__weak關(guān)鍵字修飾.
  • 如果需要在塊中修改外部變量時,需要對外部變量使用__block關(guān)鍵詞修飾.

NSNotifiction

  • NSNotifiction是通知,是一對多的使用場景.
  • 在某些情況下KVO和NSNotifiction是一樣的,都是狀態(tài)變化之后告知對方.
  • NSNotifiction的特點是,就是需要 被觀察者先主動發(fā)出通知,然后觀察者注冊監(jiān)聽后再來進行響應(yīng),比KVO多了發(fā)送通知的一步,但其優(yōu)點是監(jiān)聽不局限于屬性的變化,還可以對多種多樣的狀態(tài) 變化進行監(jiān)聽 ,監(jiān)聽范圍廣,使用也更靈活.

KVO

  • KVO就是cocoa框架實現(xiàn)的觀察者模式,一般同KVC搭配使用,通過KVO可以監(jiān)測一個值的變化:如view的高度變化 .
  • 是一對多的關(guān)系,一個值的變化會通知所有的觀察者.
  • 如果需要在塊中修改外部變量時,需要對外部變量使用__block關(guān)鍵詞修飾.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 設(shè)計模式 1.delegate和notification什么區(qū)別,什么情況使用? 2.描述一下KVO和KVC。 K...
    丶逐漸閱讀 2,025評論 3 2
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,604評論 30 472
  • 一、深復(fù)制和淺復(fù)制的區(qū)別? 1、淺復(fù)制:只是復(fù)制了指向?qū)ο蟮闹羔?,即兩個指針指向同一塊內(nèi)存單元!而不復(fù)制指向?qū)ο蟮?..
    iOS_Alex閱讀 1,527評論 1 27
  • 3.block Block是最近才加入Objective-C的,它首次出現(xiàn)在OSX10.6和iOS4平臺上。Blo...
    Saxon_Geoffrey閱讀 1,270評論 1 8
  • 《招聘一個靠譜的 iOS》—參考答案(下) 說明:面試題來源是微博@我就叫Sunny怎么了的這篇博文:《招聘一個靠...
    Mominglaile閱讀 1,257評論 0 1

友情鏈接更多精彩內(nèi)容