NSNotification 訊息通知的3種方式

2021-10-11 18:09:47 字數 1324 閱讀 1492

它是乙個單例物件,允許當事件發生時通知一些物件,讓物件做出相應反應。

它允許我們在低程度耦合的情況下,滿足控制器與乙個任意的物件進行通訊的目的。 這種模式的基本特徵是為了讓其他的物件能夠接收到某種事件傳遞過來的通知,主要使用通知名稱來傳送和接收通知。

基本上不用考慮其它影響因素,只需要使用同樣的通知名稱,監聽該通知的物件(即觀察者)再對通知做出反應即可。

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

2.對於乙個發出的通知,多個物件能夠做出反應,簡單實現1對多的方式,較之於 delegate 可以實現更大的跨度的通訊機制;

3.能夠傳遞引數(object和userinfo),object和userinfo可以攜帶傳送通知時傳遞的資訊。

1.在編譯期間不會檢查通知是否能夠被觀察者正確的處理;

2.在釋放通知的觀察者時,需要在通知中心移除觀察者;

3.在除錯的時候,通知傳遞的過程很難控制和跟蹤;

4.傳送通知和接收通知時需要提前知道通知名稱,如果通知名稱不一致,會出現不同步的情況;

5.通知發出後,不能從觀察者獲得任何的反饋資訊。

// 傳送通知

-(void)btn1click

//監聽

[[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(noti1) name:@"noti1" object:nil];

//呼叫方法

-(void)noti1

//發通知

-(void)btn2click:(uibutton *)btn

//監聽

[[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(noti2:) name:@"noti2" object:nil];

//呼叫方法

-(void)noti2:(nsnotification *)noti

//發通知

-(void)btn3click

//監聽

[[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(noti3:) name:@"noti3" object:nil];

//呼叫方法

-(void)noti3:(nsnotification *)noti

最後,記得在傳送通知訊息的頁面,在dealloc方法裡面移除觀察者。

-(void)dealloc

NSNotification學習筆記

這是乙個觀察者模式。首先在你需要監聽的類中加入觀察者 void addobserver id observer selector sel aselector name nsstring aname object id anobject 這個觀察者在監聽到anobject傳送名字為aname的noti...

NSNotification 通知傳值

方法如下 在a頁面viewdidload中註冊乙個通知 objc view plain copy 註冊通知,進行傳值 name reloadvoewnotification 這個就是其唯一標示符.系統是用來做鑑別其惟一性,就是裝置標示符一樣 nsnotificationcenterdefaultce...

NSNotification通知的使用

nsnotification通知傳值的使用 1 建立通知 建立在當前需要使用的頁面 nsnotificationcenter defaultcenter addobserver self selector selector notificationmethod name customname obj...