Notification和KVO有什麼不同

2021-07-17 05:18:15 字數 1001 閱讀 3118

notification是推送通知,我們可以建立乙個通知中心,存放建立多個通知,在不同的地方在需要的時候push呼叫

和kvo不同的是,kvo是鍵值觀察,只能觀察乙個值有乙個「notification center」的概念,他是乙個單例物件,允許當事件發生的時候通知一些物件,滿足控制器與乙個任意的物件進行通訊的目的,這種模式的基本特徵就是接收到在該controller中發生某種事件而產生的訊息,controller用乙個key(通知名稱),這樣對於controller是匿名的,其他的使用同樣地key來註冊了該通知的物件能對通知的事件作出反應。

notification的優勢:

1.不需要寫多少**,實現比較簡單

2.乙個物件發出的通知,多個物件能進行反應,一對多的方式實現很簡單

缺點:1.編譯期不會接茬通知是否能被正確處理

2.釋放註冊的物件時候,需要在通知中心取消註冊

3.除錯的時候,程式的工作以及控制流程難跟蹤

4.需要第三方來管理controller和觀察者的聯絡

5.controller和觀察者需要提前知道通知名稱、userinfo dictionary keys。如果這些沒有在工作區間定義,那麼會出現不同步的情況

6.通知發出後,發出通知的物件不能從觀察者獲得任何反饋。

kvokvo是乙個物件能觀察另乙個物件屬性的值,前兩種模式更適合乙個controller和其他的物件進行通訊,而kvo適合任何物件監聽另乙個物件的改變,這是乙個物件與另外乙個物件保持同步的一種方法。kvo只能對屬性做出反應,不會用來對方法或者動作做出反應。

優點:1.提供乙個簡單地方法來實現兩個物件的同步

2.能對非我們建立的物件做出反應

3.能夠提供觀察的屬性的最新值和先前值

4.用keypaths 來觀察屬性,因此也可以觀察巢狀物件

缺點:1.觀察的屬性必須使用string來定義,因此編譯器不會出現警告和檢查

2.對屬性的重構將導致觀察不可用

3.複雜的「if」語句要求物件正在觀察多個值,這是因為所有的觀察都通過乙個方法來指向

Notification 詳細運用

setcontentview r.layout.activity main notificationmanager獲取notification service final notificationmanager notificationmanager notificationmanager gets...

Notification高度問題

最近用到了自定義的notification布局 高度突然顯示不全,是因為在預設情況下低版本只有 builder.setcontent remoteviews 預設高度64 超出則顯示不全 而在api16 以上提供了bigcontenteview builder.setcustombigcontent...

高階Notification技巧

在接下來的章節,你將學習如何增強 notification 功能 通過硬體來提供額外的警示,如讓裝置響鈴 閃光和振動。上述描述的每個增強功能,你都將看到乙個 片段,你可以將它們新增到 earthquake 例子中,在每次檢測到 時,都會給使用者提供反饋。在這裡描述的 notification 技巧中...