ios 使用觀察者模式

2021-06-25 11:58:40 字數 1420 閱讀 1344

// 觀察者模式

/*在cocoa touch框架中,觀察者模式的具體應用有兩個:通知機制(notification)機制和kvo(key-value observing)機制 */

// 通知機制:通知機制和委託模式不同的是,前者是「一對多」的物件之間的通訊,後者是「一對一」的物件之間的通訊

/*通知主要有三種:廣播通知(broadcast notification)、本地通知(lacal notification)和推送通知(push notification)

廣播通知:廣播通知可以在乙個應用內部的多個物件之間傳送訊息,主要是傳送訊息。

本地通知:本地通知是給使用者一種「提示」,它的「提示」方式有警告對話方塊、發出聲音、振動和應用圖示上顯示數字,在計畫時間到達時,本地通知由本地ios發出。

推送通知:推送通知由第三方程式傳送給蘋果的遠端伺服器,再由遠端伺服器推送給ios的特定應用。

*/通知機制實際運用:

- (void)dealloc

- (void)viewdidload

- (void)handle:(nsnotification *)obj

至此,通知機制介紹已經完畢,程式執行效果如下:

2014-09-06 23:36:49.788 test002[1963:907] (null)

2014-09-06 23:36:49.790 test002[1963:907] (null)

// kvo模式不像通知機制那樣通過乙個通知中心通知所有觀察者,而是在物件屬性變化時通知會被直接傳送給觀察者

/*關鍵是兩個方法:

addobserver:

forkeypath:options:註冊觀察者

observevalueforkeypath: ofobject: change: context:觀察者重寫該方法以響應屬性的變化

*/ kvo模式實際運用:

//

//@end

//

//- (void)observevalueforkeypath:(nsstring *)keypath ofobject:(id)object change:(nsdictionary *)change context:(void *)context

@end

至此,kvo模式介紹已經完畢,程式執行效果如下:

kind = 1;

new = launch;

old = "";

} context: pass context

kind = 1;

new = becomeactive;

old = launch;

} context: pass context

iOS 觀察者設計模式

觀察者模式用於當某件事情發生時去執行某事 當某件事發生的時候,就會通知所有的觀察者 1.首先要新增觀察者 或者稱為監聽者 因為生產者需要維護這乙個所有觀察者的陣列,當某件事情發生時就迴圈這個資料,依次進行對每個觀察者進行通知 2.當某件時發生時就傳送通知 在ios中觀察者模式已經被封裝成了nsnot...

iOS設計模式 觀察者

ios設計模式 觀察者 原理圖 1.cocoa框架本身實現了觀察者模式 通知中心以及kvo 2.本人所寫的例子,實現了通知中心,其特殊的地方在於,不用移除訂閱了通知的物件原始碼 observerpattern created by youxianming on 15 7 29.import impo...

IOS設計模式之觀察者模式

觀察者 observer 模式也叫發布訂閱 publish subscribe 模式,是mvc 模型 檢視 控制器 模式的重要組成部分。include usingnamespace std class observer class engine void download private obser...