iOS NSNotificationCenter

NSNotification 是iOS中一個(gè)調(diào)度消息通知的類(lèi),采用單例模式設(shè)計(jì),在程序中實(shí)現(xiàn)傳值匣屡、回調(diào)等地方應(yīng)用很廣。

一荐健、通知的使用三步走

1.通知的創(chuàng)建與發(fā)送

在需要發(fā)送通知的界面中創(chuàng)建通知

// 1.添加字典, 將數(shù)據(jù)包到字典中
NSDictionary *dict =[[NSDictionary alloc] initWithObjectsAndKeys:@"小明",@"name",@"111401",@"number", nil];

// 2.創(chuàng)建通知
NSNotification *notification =[NSNotification notificationWithName:@"InfoNotification" object:nil userInfo:dict];

// 3.通過(guò) 通知中心 發(fā)送 通知
[[NSNotificationCenter defaultCenter] postNotification:notification];
[self dismissViewControllerAnimated:YES completion:nil];

2.通知的接收

在需要接收的控制器中注冊(cè)通知監(jiān)聽(tīng)者险耀,將通知發(fā)送的信息接收

// 1.注冊(cè)通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(InfoNotificationAction:) name:@"InfoNotification" object:nil];
// 2.實(shí)現(xiàn)收到通知觸發(fā)的方法

- (void)InfoNotificationAction:(NSNotification *)notification{

      NSLog(@"%@",notification.userInfo);
      NSLog(@"---接收到通知---");
}

3.通知的移除

移除通知:

[[NSNotificationCenter defaultCenter] removeObserver:observer name:nil object:self];

注意參數(shù)notificationObserver為要?jiǎng)h除的觀(guān)察者,一定不能置為nil盆色。

二灰蛙、相關(guān)類(lèi)

1、NSNotification

這個(gè)類(lèi)可以理解為一個(gè)消息對(duì)象隔躲,其中有三個(gè)成員變量摩梧。

這個(gè)成員變量是這個(gè)消息對(duì)象的唯一標(biāo)識(shí),用于辨別消息對(duì)象宣旱。

@property (readonly, copy) NSString *name;

這個(gè)成員變量定義一個(gè)對(duì)象仅父,可以理解為針對(duì)某一個(gè)對(duì)象的消息。

@property (readonly, retain) id object;

這個(gè)成員變量是一個(gè)字典浑吟,可以用其來(lái)進(jìn)行傳值笙纤。

@property (readonly, copy) NSDictionary *userInfo;

NSNotification的初始化方法:

- (instancetype)initWithName:(NSString *)name object:(id)object userInfo:(NSDictionary *)userInfo;

+ (instancetype)notificationWithName:(NSString *)aName object:(id)anObject;

+ (instancetype)notificationWithName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo;

注意:官方文檔有明確的說(shuō)明,不可以使用init進(jìn)行初始化

2组力、NSNotificationCenter

這個(gè)類(lèi)是一個(gè)通知中心省容,使用單例設(shè)計(jì),每個(gè)應(yīng)用程序都會(huì)有一個(gè)默認(rèn)的通知中心燎字。用于調(diào)度通知的發(fā)送的接受腥椒。

添加一個(gè)觀(guān)察者阿宅,可以為它指定一個(gè)方法,名字和對(duì)象笼蛛。接受到通知時(shí)洒放,執(zhí)行方法。

- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject;

發(fā)送通知消息的方法

- (void)postNotification:(NSNotification *)notification;

- (void)postNotificationName:(NSString *)aName object:(id)anObject;

- (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo;

移除觀(guān)察者的方法

- (void)removeObserver:(id)observer;

- (void)removeObserver:(id)observer name:(NSString *)aName object:(id)anObject;
幾點(diǎn)注意:
  • 如果發(fā)送的通知指定了object對(duì)象滨砍,那么觀(guān)察者接收的通知設(shè)置的object對(duì)象與其一樣往湿,才會(huì)接收到通知,但是接收通知如果將這個(gè)參數(shù)設(shè)置為了nil惋戏,則會(huì)接收一切通知领追。

  • 觀(guān)察者的SEL函數(shù)指針可以有一個(gè)參數(shù),參數(shù)就是發(fā)送的死奧西對(duì)象本身日川,可以通過(guò)這個(gè)參數(shù)取到消息對(duì)象的userInfo蔓腐,實(shí)現(xiàn)傳值。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末龄句,一起剝皮案震驚了整個(gè)濱河市回论,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌分歇,老刑警劉巖傀蓉,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異职抡,居然都是意外死亡葬燎,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)缚甩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谱净,“玉大人,你說(shuō)我怎么就攤上這事擅威『咎剑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵郊丛,是天一觀(guān)的道長(zhǎng)李请。 經(jīng)常有香客問(wèn)我,道長(zhǎng)厉熟,這世上最難降的妖魔是什么导盅? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮揍瑟,結(jié)果婚禮上白翻,老公的妹妹穿的比我還像新娘。我一直安慰自己绢片,他們只是感情好滤馍,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布恩急。 她就那樣靜靜地躺著,像睡著了一般纪蜒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上此叠,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天纯续,我揣著相機(jī)與錄音,去河邊找鬼灭袁。 笑死猬错,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的茸歧。 我是一名探鬼主播倦炒,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼软瞎!你這毒婦竟也來(lái)了逢唤?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤涤浇,失蹤者是張志新(化名)和其女友劉穎鳖藕,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體只锭,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡著恩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蜻展。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喉誊。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖纵顾,靈堂內(nèi)的尸體忽然破棺而出伍茄,到底是詐尸還是另有隱情,我是刑警寧澤片挂,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布幻林,位于F島的核電站,受9級(jí)特大地震影響音念,放射性物質(zhì)發(fā)生泄漏沪饺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一闷愤、第九天 我趴在偏房一處隱蔽的房頂上張望整葡。 院中可真熱鬧,春花似錦讥脐、人聲如沸遭居。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)俱萍。三九已至端壳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間枪蘑,已是汗流浹背损谦。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岳颇,地道東北人照捡。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像话侧,于是被迫代替她去往敵國(guó)和親栗精。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • OC語(yǔ)言基礎(chǔ) 1.類(lèi)與對(duì)象 類(lèi)方法 OC的類(lèi)方法只有2種:靜態(tài)方法和實(shí)例方法兩種 在OC中瞻鹏,只要方法聲明在@int...
    奇異果好補(bǔ)閱讀 4,250評(píng)論 0 11
  • 點(diǎn)擊查看原文 Web SDK 開(kāi)發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 13,675評(píng)論 0 15
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,321評(píng)論 8 265
  • 生活就像海洋悲立,只有益智堅(jiān)強(qiáng)的人,才能到達(dá)彼岸新博! 當(dāng)我們努力使自己變得比現(xiàn)在更好地時(shí)候级历,我們周?chē)囊磺幸矔?huì)變得更好。
    瑞TYSS閱讀 85評(píng)論 0 0
  • 正所謂 贈(zèng)人玫瑰叭披,手有余香 贈(zèng)人以書(shū)寥殖,受用終生 于是乎 小捕為了技術(shù)宅們的終生決定開(kāi)展贈(zèng)書(shū)活動(dòng) 主題 作為Andr...
    f9dd77add98e閱讀 554評(píng)論 0 0