亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 系統(tǒng) > iOS > 正文

iOS NSNotificationCenter通知中心使用小結(jié)

2019-10-21 18:39:15
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

最近公司組織兩個(gè)星期的新人培訓(xùn),事情安排的滿滿的,周末都沒(méi)有。說(shuō)好的一個(gè)星期一更新的博客中斷了,讓大家久等了,現(xiàn)在培訓(xùn)結(jié)束,終于又可以安安靜靜的做一個(gè)程序員了,好開(kāi)心。。。

一、NSNotification和Delegate的聯(lián)系和區(qū)別

眾所周知,IOS中經(jīng)常會(huì)使用到NSNotification和delegate來(lái)進(jìn)行一些類之間的消息傳遞。言歸正傳,這兩種有什么區(qū)別呢? 
NSNotification就是IOS提供的一個(gè)消息中心,由一個(gè)全局的defaultNotification管理應(yīng)用中的消息機(jī)制。通過(guò)公開(kāi)的API可以看出,這里面使用了是一個(gè)觀察者,通過(guò)注冊(cè)addObserver和解除注冊(cè)removeObserver來(lái)實(shí)現(xiàn)消息傳遞。蘋果文檔特別提出,在類析構(gòu)的時(shí)候,要記得把removeObserver,不然就會(huì)引發(fā)崩潰,所以NSNotifcation的使用是沒(méi)有retain+1的,NSNotification是一對(duì)多的。 

至于Delegate,很簡(jiǎn)單,就是通過(guò)增加一個(gè)指針,然后把需要調(diào)用的函數(shù)通過(guò)delegate傳遞到其他類中,來(lái)得很直截了當(dāng)。不需要通過(guò)廣播的形式去實(shí)現(xiàn),但是,delegate的形式只能是一對(duì)一,不能實(shí)現(xiàn)一對(duì)多。

在什么情況下使用Delegate和NSNotifiation呢? 

從效率上看Delegate是一個(gè)很輕量級(jí)的,相對(duì)delegate,NSNotification卻是一個(gè)很重量級(jí)的,效率上delegate明顯要比Noticication高。一般情況我們會(huì)這樣使用。 

場(chǎng)景一: 

A擁有B,然后B中的一些操作需要回調(diào)到A中,這時(shí)候就簡(jiǎn)單的通過(guò)delegate回調(diào)到A。因?yàn)锽是A創(chuàng)建的,B可以很直接的把delegate賦值A(chǔ)。 

場(chǎng)景二: 

A和B是兩個(gè)不相干的關(guān)系,A不知道B,B也不知道A,那么這時(shí)候如果通過(guò)delegate就沒(méi)辦法做到,會(huì)相對(duì)復(fù)雜。所以可以通過(guò)NSNotifcation去做一些消息傳遞。 

所以使用delegate的情況是兩者有直接的關(guān)系,至于一方知道另一方的存在。而NSNotifcation一般是大家不知道對(duì)方的存在,一般是使用跨模塊的時(shí)候使用。在使用的時(shí)候,使用delegate可能需要多寫一些delegate去實(shí)現(xiàn),代碼量比較多。NSNotication只要定義相關(guān)的NotificationName就可以很方便的溝通。兩者各有所長(zhǎng)。

二、監(jiān)聽(tīng)系統(tǒng)自帶的NSNotification

系統(tǒng)里定義了許多的 XxxNotification 名稱,其實(shí)只要 Cmd+Shift+O 打開(kāi) Open Quickly,輸入 NSNotification 或者 UINotification 可以看到許多以 Notification 結(jié)尾的變量定義,由變量名稱也能理解在什么時(shí)候會(huì)激發(fā)什么事件,一般都是向 [NSNotificationCenter defaultCenter] 通知的。

iOS,NSNotificationCenter,通知中心

使用步驟

第一步:注冊(cè)系統(tǒng)監(jiān)聽(tīng)事件

 //在NSNotificationCenter中注冊(cè)鍵盤彈出事件  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardUpEvent:) name:UIKeyboardDidShowNotification object:nil];  //在NSNotificationCenter中注冊(cè)鍵盤隱藏事件  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDownEvent:) name:UIKeyboardDidHideNotification object:nil];  //在NSNotificationCenter中注冊(cè)程序從后臺(tái)喚醒事件  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(becomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];

第二步:事件觸發(fā)后的處理

/** * 彈出鍵盤事件觸發(fā)處理 * * @param notification */-(void)keyboardUpEvent : (NSNotification *)notification{  //NSLog(@"鍵盤彈出事件觸發(fā)==%@",notification);  NSLog(@"鍵盤彈出事件觸發(fā)");}/** * 鍵盤隱藏事件觸發(fā)處理 * * @param notification */-(void)keyboardDownEvent : (NSNotification *)notification{  //NSLog(@"鍵盤隱藏事件觸發(fā)==%@",notification);  NSLog(@"鍵盤隱藏事件觸發(fā)");}/** * 程序從后臺(tái)喚醒觸發(fā)處理 * * @param notification */-(void)becomeActive: (NSNotification *)notification{  NSLog(@"程序從后臺(tái)喚醒觸發(fā)處理");}

第三步、在dealloc中解除監(jiān)聽(tīng)

/** *NSNotificationCenter 注意點(diǎn):每一次在接受者對(duì)象中需要delleac把它銷毀掉。 */-(void)dealloc{  [[NSNotificationCenter defaultCenter] removeObserver:self];}

三、自定義NSNotification

這里我使用的一個(gè)實(shí)例為:在ViewController中定義一個(gè)按鈕,點(diǎn)擊該按鈕,同時(shí)改變兩個(gè)自定義View中的內(nèi)容。

使用步驟

第一步、在ViewController中生成一個(gè)按鈕,兩個(gè)自定義View

 UIButton *postMsgBtn = [[UIButton alloc] initWithFrame:CGRectMake(50, 200, 100, 40)];  [postMsgBtn setTitle:@"發(fā)送消息" forState:UIControlStateNormal];  postMsgBtn.backgroundColor = [UIColor grayColor];  [postMsgBtn addTarget:self action:@selector(postMsg:) forControlEvents:UIControlEventTouchUpInside];  [self.view addSubview:postMsgBtn];  MyView *view = [[MyView alloc] initWithFrame:CGRectMake(50, 250, 100, 50)];  [self.view addSubview:view];  MyView *view2 = [[MyView alloc] initWithFrame:CGRectMake(50, 320, 100, 50)];  [self.view addSubview:view2];

第二步、點(diǎn)擊按鈕,發(fā)送Notification

-(void)postMsg: (UIButton *)btn{  [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_MESSAGE_NAME object:nil userInfo:@{@"msg":@"jingming1"}];}

第三步、在自定義View中注冊(cè)監(jiān)聽(tīng)事件

 

復(fù)制代碼代碼如下:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(acceptMsg:) name:NOTIFICATION_MESSAGE_NAME object:nil];

 

第四步、處理監(jiān)聽(tīng)事件

-(void)acceptMsg : (NSNotification *)notification{  NSLog(@"%@",notification);  NSDictionary *userInfo = notification.userInfo;  _label.text = [userInfo objectForKey:@"msg"];}

第五步、在dealloc中解除監(jiān)聽(tīng)

-(void)dealloc{  [[NSNotificationCenter defaultCenter] removeObserver:self];}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到IOS開(kāi)發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
久久久久久久久丰满| 亚洲午夜激情av| 国产亚洲精久久久久久| 亚州精品国产| 午夜综合激情| 国产女主播一区二区| 国产成人精品福利| 久久久影院免费| 香蕉久久久久久| 日韩精品一线二线三线| 久久无码高潮喷水| 猫咪成人在线观看| 国产精品三p一区二区| 国产精品1000部啪视频| 精品视频无码一区二区三区| 国产综合色激情| 成人久久精品人妻一区二区三区| 黄色成人在线视频| 欧美丝袜自拍制服另类| 丰满少妇被猛烈进入高清播放| 91色乱码一区二区三区| 日本高清不卡在线观看| 国产一区二区美女视频| 在线播放国产一区中文字幕剧情欧美| 三级小视频在线观看| 亚洲午夜久久久久久尤物| 中文字幕中文字幕一区二区| 天天干在线播放| 久久久精品2019中文字幕之3| 色中色综合网| 夜鲁夜鲁夜鲁视频在线播放| 在线高清一区| 国产91色在线|| 91精品久久久久久久91蜜桃| 一本岛在线视频| 九色视频在线观看免费播放| 精品黑人一区二区三区国语馆| 国产欧美日韩在线| 欧美嫩在线观看| 欧美日韩亚洲三区| 天天爽夜夜爽夜夜爽精品视频| 天天干,天天操,天天射| 丰满少妇一级片| 国产在线精品一区免费香蕉| 国产偷窥洗澡视频| 日韩高清免费av| 亚洲不卡中文字幕无码| 久久午夜a级毛片| 亚洲成av人片www| 欧美成人综合一区| 综合毛片免费视频| 久久久久久久影院| 性色av一区二区三区| 成人深夜直播免费观看| 做爰高潮hd色即是空| 精品日本视频| 成人sese在线| 精品美女久久久| 亚洲精品一区二区三区av| 色爱av美腿丝袜综合粉嫩av| 久久在线中文字幕| 亚洲综合免费观看高清在线观看| 欧美日韩久久精品| 欧美日韩国产综合视频在线观看中文| 欧美精品一本久久男人的天堂| 精品少妇一区二区三区在线视频| av成人老司机| 99热国内精品| 色综合蜜月久久综合网| aaa欧美色吧激情视频| 日本一区二区在线免费观看| 男人影院在线观看| a中文在线播放| 亚洲一区二区三区视频播放| 欧美不卡高清一区二区三区| 久久久久在线| 国产欧美日韩三区| 欧美福利视频| √天堂资源中文www| 欧美天天综合| 日日日日人人人夜夜夜2017| 欧美电影在线免费观看| 成人3d精品动漫精品一二三| 污污网站在线观看| 亚洲国产综合一区| 91丝袜一区二区三区| 亚洲一品av免费观看| julia一区二区三区中文字幕| 国模大尺度视频一区二区| 九九热这里只有在线精品视| 亚洲老头老太hd| 精品视频一区二区在线观看| 欧美日韩国产123区| 国产精品中文字幕一区二区三区| 欧美一区二区三区在线免费观看| 韩国一区二区视频| 亚洲an天堂an在线观看| 国产aaa免费视频| 69久久夜色精品国产69乱青草| 久久福利视频一区二区| 国产精品19乱码一区二区三区| 亚洲精品成人无限看| 一区在线不卡| 男女羞羞网站| 91麻豆精品国产91久久久更新资源速度超快| a毛片毛片av永久免费| 超碰精品在线| 婷婷久久综合| 久播影院第一理论片| 欧美美女一区二区三区| 成人黄色国产精品网站大全在线免费观看| 一区二区三区高清在线视频| 一呦二呦三呦国产精品| 91在线高清视频| 51xx午夜影福利| 丁香六月婷婷综合| 女女调教被c哭捆绑喷水百合| 亚洲精品中文字幕乱码三区91| a资源在线观看| frxxee中国xxx麻豆hd| 黄色免费在线观看网站| 色噜噜狠狠永久免费| 成人区精品一区二区婷婷| 国产精品欧美经典| 日本在线视频一区| 激情视频免费| 久久久久一本一区二区青青蜜月| 午夜久久资源| 国产欧美日韩一区二区三区在线观看| 日本久久久久久久久久久久| 可以免费看黄色的网站| 在线观看国产一区| 国产成人精品免费久久久久| 国产精品自产拍高潮在线观看| 亚洲欧美一区二区三区四区五区| 日韩欧美精品在线不卡| 亚洲精品天堂成人片av在线播放| 国产精品视频一区二区三区| 裸体在线国模精品偷拍| 亚洲精品9999| 精品国产av无码| 九色自拍视频| 国产一级做a爰片久久| 亚洲免费av网站| 亚洲欧美综合另类中字| 日韩 欧美 亚洲| 欧美视频第二页| 女人抽搐喷水高潮国产精品| aa国产成人| 精品亚洲国产成av人片传媒| 日韩影片在线观看| 久热国产在线视频| 国产免费久久久| 国产精品无码一区二区在线| 中日韩美女免费视频网站在线观看| 欧美精选视频在线观看| 欧美黄色一级片视频| 男人女人靠逼视频| 欧美成人另类视频| 韩国一区二区电影| 欧美日韩一区二区在线观看| 国产日韩欧美a| 免费中国女人69xxxxx视频| 免费大片黄在线| 欧美人妇做爰xxxⅹ性高电影| 欧美变态xxxx| 亚洲天堂视频在线播放| 亚洲国产精品成人一区二区在线| 欧美日韩在线观看免费| 国产精品sm| 2025国产精品自拍| 欧美视频在线免费| freesex欧美| 4hu四虎永久在线观看| 免费不卡在线观看av| 55夜色66夜色国产精品视频| 国产精品videosex极品| 91在线porny国产在线看| 日韩一区欧美| 97av免费视频| 国产一级一片免费播放| 亚洲国产精品电影| 综合视频免费看| 久久午夜色播影院免费高清| 丝袜美腿一区二区三区动态图| 中文字幕亚洲无线码在线一区| 男女小视频在线观看| 欧美日本韩国一区二区三区| 国产一区二区久久久久| 中文字幕在线一二| 五月综合激情在线| 亚洲欧美视频在线| 91精品国产麻豆国产在线观看| 精品国产鲁一鲁一区二区张丽| 四虎成人av| 97视频人免费观看| 日本一区二区三区网站| 四虎影视4hu4虎成人| 国产亚洲成av人在线观看导航| 黄色一级视频网站| 男人的天堂网av| 欧美精品久久久久久久久25p| 久久午夜免费视频| 亚州色图欧美色图| 日韩jizzz| 你懂的国产精品| 国产午夜精品视频免费不卡69堂| 亚洲综合免费观看高清在线观看| 国产精品素人视频| 欧美色xxx| 国产精品久久久久无码av色戒| 黄色网址在线视频| 亚洲欧洲国产专区| 老太脱裤让老头玩ⅹxxxx| 欧美激情视频三区| www.四虎在线观看| 91精品国产福利尤物| 天天干天天操天天爱| 国产成人高清激情视频在线观看| 欧美一级小视频| 日韩av影音先锋| 成人精品网站在线观看| 在线观看欧美视频| www.在线视频| 亚洲综合欧美| 亚洲午夜免费视频| 久久精品日韩无码| 日本女优北野望在线电影| 91老司机福利 在线| 国产97在线 | 亚洲| 亚洲第一在线综合在线| 成人综合日日夜夜| 国产精品蜜月aⅴ在线| 青青草精品视频在线| 一区二区三区精品视频在线观看| 日韩福利一区二区| 国产精品亚洲欧美在线播放| 91麻豆精品成人一区二区| 在线观看av一区二区| 夜夜骚av一区二区三区| 日韩久久中文字幕| 国产精品第七影院| 国内精品久久99人妻无码| 激情一区二区| 国产一区99| 国产日韩精品推荐| 亚洲天堂网在线播放| 国产美女在线一区| 福利视频一区二区三区四区| 日本黄色小网站| 久久精品在线| 欧美黄免费看| 无遮挡动作视频在线观看免费入口| 一个人看的日本www的免费视频| 国产十八熟妇av成人一区| 亚洲成av人片在线| 国产黄色麻豆视频| 窝窝九色成人影院| www.好吊色| 国产成人麻豆精品午夜在线| 荫蒂被男人添免费视频| 久久久精品一区| 忘忧草在线日韩www影院| 92福利视频午夜1000合集在线观看| 另类图片激情| 亚洲精品免费一区亚洲精品免费精品一区| 国产91在线精品| 99久久国产免费免费| 免费精品视频在线| 日韩视频免费看| 久久精品66| 老司机午夜性大片| 日韩一级免费毛片| 日本a在线观看| 欧美大片免费久久精品三p| 欧美日韩精品二区| 九九九久久久久| aa片在线观看视频在线播放| 亚洲国产你懂的| 亚洲高清视频免费观看| 亚洲成avwww人| 欧美少妇bbb| 国产奶水涨喷在线播放| 忘忧草在线影院两性视频| 久久91精品视频| 国产不卡视频| 亚洲国产精品综合| 国产三级免费观看| 久久人人爽av| 综合国产精品久久久| 图片专区亚洲欧美另类| 国产亚洲观看| 日本国产在线视频| 精品无码一区二区三区| 色婷婷av一区二区三区之红樱桃| 黑森林国产精品av| wwwxx欧美| 成人亚洲一区二区| 久久免费播放视频| 亚洲熟妇无码久久精品| 成人蜜桃视频网站网址| 日韩一区二区三区观看| 亚洲精品福利在线| 欧美在线视频一区二区| sm久久捆绑调教精品一区| 人妻91麻豆一区二区三区| 丁香六月久久综合狠狠色| 亚洲最大av网| 亚洲天堂手机| 国产高清自产拍av在线| 黄色电影免费在线看| 毛片女人与拘交视频| 精品欧美一区二区久久| 午夜视频在线观看精品中文| 欧美video巨大粗暴18| ㊣最新国产の精品bt伙计久久| 亚洲女人被黑人巨大进入| 国产精品高清一区二区| 天天色天天射天天综合网| 久久综合狠狠综合久久综青草| 久久久久伊人| 自拍偷拍亚洲色图欧美| 精品不卡一区二区三区| 欧美激情1区2区| 天天操天天操天天干| 国产在线一区二区三区播放| 伊人久久大香线蕉av超碰演员| 欧美一级裸体视频|