iOS NSNotification 消息通知的3種方式

翻譯的美國大作家歷史小說《明日此時》,亞馬遜已經(jīng)有電子版可以購買閱讀

Notification Center的概念:

它是一個單例對象曙咽,允許當事件發(fā)生時通知一些對象,讓對象做出相應反應。

它允許我們在低程度耦合的情況下底瓣,滿足控制器與一個任意的對象進行通信的目的。 這種模式的基本特征是為了讓其他的對象能夠接收到某種事件傳遞過來的通知,主要使用通知名稱來發(fā)送和接收通知捐凭。

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

本文的demo 下載地址?

優(yōu)勢:

1.不需要編寫多少代碼患民,實現(xiàn)比較簡單;

2.對于一個發(fā)出的通知垦梆,多個對象能夠做出反應匹颤,簡單實現(xiàn)1對多的方式,較之于?Delegate?可以實現(xiàn)更大的跨度的通信機制托猩;

3.能夠傳遞參數(shù)(object和userInfo)印蓖,object和userInfo可以攜帶發(fā)送通知時傳遞的信息。

缺點:

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

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

3.在調(diào)試的時候公浪,通知傳遞的過程很難控制和跟蹤他宛;

4.發(fā)送通知和接收通知時需要提前知道通知名稱,如果通知名稱不一致欠气,會出現(xiàn)不同步的情況厅各;

5.通知發(fā)出后,不能從觀察者獲得任何的反饋信息晃琳。

NSNotification 的3種使用方式

1讯检、不傳遞參數(shù), 最常用的一種

// 發(fā)送通知

-(void)btn1Click

{

[[NSNotificationCenter defaultCenter] postNotificationName:@"noti1" object:nil];

}

//監(jiān)聽

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(noti1) name:@"noti1" object:nil];

//調(diào)用方法

-(void)noti1

{

NSLog(@"接收 不帶參數(shù)的消息");

}

2、使用object 傳遞消息

//發(fā)通知

-(void)btn2Click:(UIButton *)btn

{

[[NSNotificationCenter defaultCenter] postNotificationName:@"noti2" object:[NSString stringWithFormat:@"%@",btn.titleLabel.text]];

}

//監(jiān)聽

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(noti2:) name:@"noti2" object:nil];

//調(diào)用方法

-(void)noti2:(NSNotification *)noti

{

//使用object處理消息

NSString *info = [noti object];

NSLog(@"接收 object傳遞的消息:%@",info);

}

3卫旱、使用userInfo 傳遞消息

//發(fā)通知

-(void)btn3Click

{

NSDictionary *dic = [NSDictionary dictionaryWithObject:@"userInfo消息" forKey:@"param"];

[[NSNotificationCenter defaultCenter] postNotificationName:@"noti3" object:nil userInfo:dic];

}


//監(jiān)聽

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(noti3:) name:@"noti3" object:nil];

//調(diào)用方法

-(void)noti3:(NSNotification *)noti

{

//使用userInfo處理消息

NSDictionary? *dic = [noti userInfo];

NSString *info = [dic objectForKey:@"param"];

NSLog(@"接收 userInfo傳遞的消息:%@",info);

}

最后人灼,記得在發(fā)送通知消息的頁面,在dealloc方法里面移除觀察者顾翼。

-(void)dealloc

{

//移除觀察者投放,Observer不能為nil

[[NSNotificationCenter defaultCenter] removeObserver:self];

}

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市适贸,隨后出現(xiàn)的幾起案子灸芳,更是在濱河造成了極大的恐慌,老刑警劉巖拜姿,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烙样,死亡現(xiàn)場離奇詭異,居然都是意外死亡蕊肥,警方通過查閱死者的電腦和手機谒获,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人批狱,你說我怎么就攤上這事裸准。” “怎么了赔硫?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵炒俱,是天一觀的道長。 經(jīng)常有香客問我爪膊,道長权悟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任惊完,我火速辦了婚禮僵芹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘小槐。我一直安慰自己拇派,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布凿跳。 她就那樣靜靜地躺著件豌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪控嗜。 梳的紋絲不亂的頭發(fā)上茧彤,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音疆栏,去河邊找鬼曾掂。 笑死,一個胖子當著我的面吹牛壁顶,可吹牛的內(nèi)容都是我干的珠洗。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼若专,長吁一口氣:“原來是場噩夢啊……” “哼许蓖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起调衰,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤膊爪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嚎莉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體米酬,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年趋箩,在試婚紗的時候發(fā)現(xiàn)自己被綠了淮逻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琼懊。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖爬早,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情启妹,我是刑警寧澤筛严,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站饶米,受9級特大地震影響桨啃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜檬输,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一照瘾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丧慈,春花似錦析命、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至完域,卻和暖如春软吐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吟税。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工凹耙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肠仪。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓肖抱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親藤韵。 傳聞我的和親對象是個殘疾皇子虐沥,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容