1. 程式人生 > >KVO,NSNotification、Block、Delegate和KVO的區別

KVO,NSNotification、Block、Delegate和KVO的區別

在 Objective-C 中如何實現 KVO

KVO中誰要監聽誰註冊,然後對響應進行處理,使得觀察者與被觀察者完全解耦。KVO只檢測類中的屬性,並且屬性名都是通過NSString來查詢,編譯器不會檢錯和補全,全部取決於自己。
代理的作用

代理又叫委託,是一種設計模式,代理是物件與物件之間的通訊互動,代理解除了物件之間的耦合性。
改變或傳遞控制鏈。允許一個類在某些特定時刻通知到其他類,而不需要獲取到那些類的指標。可以減少框架複雜度。
另外一點,代理可以理解為java中的回撥監聽機制的一種類似。
代理的屬性常是assign的原因:防止迴圈引用,以至物件無法得到正確的釋放。
NSNotification、Block、Delegate和KVO的區別。


代理是一種回撥機制,且是一對一的關係,通知是一對多的關係,一個對向所有的觀察者提供變更通知;
效率:Delegate比NSNOtification高;
Delegate和Block一般是一對一的通訊;
Delegate需要定義協議方法,代理物件實現協議方法,並且需要建立代理關係才可以實現通訊;
Block:Block更加簡潔,不需要定義繁瑣的協議方法,但通訊事件比較多的話,建議使用Delegate;