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

首頁 > 學院 > 開發設計 > 正文

iOS開發UI篇章之通知中心(NSNotificationCenter)

2019-11-14 19:59:04
字體:
來源:轉載
供稿:網友

一、通知中心(NSNotificationCenter)

 

 

每一個應用程序都有一個通知中心(NSNotificationCenter)實例,專門負責協助不同對象

之間的消息通信

• 任何一個對象都可以向通知中心發布通知(NSNotification),描述自己在做什么。其他感 興趣的對象(Observer)可以申請在某個特定通知發布時(或在某個特定的對象發布通知時)

 

二、通知(NSNotification)

•一個完整的通知一般包含3個屬性:

 Ø- (NSString *)name; // 通知的名稱

 Ø- (id)object; // 通知發布者(是誰要發布通知)

 Ø- (NSDictionary *)userInfo; // 一些額外的信息(通知發布者傳遞給通知接收者的信息內 容)

•初始化一個通知(NSNotification)對象

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

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

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

•一個完整的通知一般包含3個屬性:

 Ø- (NSString *)name; // 通知的名稱

 Ø- (id)object; // 通知發布者(是誰要發布通知)

 Ø- (NSDictionary *)userInfo; // 一些額外的信息(通知發布者傳遞給通知接收者的信息內 容)

•初始化一個通知(NSNotification)對象

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

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

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

三、發布通知

通知中心(NSNotificationCenter)提供了相應的方法來幫助發布通知 •- (void)postNotification:(NSNotification *)notification;

 Ø發布一個notification通知,可在notification對象中設置通知的名稱、通知發布者、額 外信息

•- (void)postNotificationName:(NSString *)aName object:(id)anObject; Ø發布一個名稱為aName的通知,anObject為這個通知的發布者

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

Ø發布一個名稱為aName的通知,anObject為這個通知的發布者,aUserInfo為額外信息

四、注冊通知監聽器

通知中心(NSNotificationCenter)提供了方法來注冊一個監聽通知的監聽器(Observer)

•- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName

object:(id)anObject;

 Øobserver:監聽器,即誰要接收這個通知 ØaSelector:收到通知后,回調監聽器的這個方法,并且把通知對象當做參數傳入 ØaName:通知的名稱。如果為nil,那么無論通知的名稱是什么,監聽器都能收到這個通知       ØanObject:通知發布者。如果為anObjectaName都為nil,監聽器都收到所有的通知

•- (id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *note))block;

 Øname:通知的名稱

 Øobj:通知發布者 Øblock:收到對應的通知時,會回調這個block

 Øqueue:決定了block在哪個操作隊列中執行,如果傳nil,默認在當前操作隊 列中同步執行

五、取消注冊通知監聽器

•通知中心不會保留(retain)監聽器對象,在通知中心注冊過的對象,必須在該對象釋放前取 消注冊。否則,當相應的通知再次出現時,通知中心仍然會向該監聽器發送消息。因為相應的 監聽器對象已經被釋放了,所以可能會導致應用崩潰

•通知中心提供了相應的方法來取消注冊監聽器 Ø- (void)removeObserver:(id)observer;

 Ø- (void)removeObserver:(id)observer name:(NSString *)aName object:(id)anObject;

•一般在監聽器銷毀之前取消注冊(如在監聽器中加入下列代碼): - (void)dealloc {

//[super dealloc]; 非ARC中需要調用此句 [[NSNotificationCenter defaultCenter] removeObserver:self];

}

六、UIDevice通知

• UIDevice類提供了一個單粒對象,它代表著設備,通過它可以獲得一些設備相關的信息,比 如電池電量值(batteryLevel)、電池狀態(batteryState)、設備的類型(model,比如ipod、 iPhone等)、設備的系統(systemVersion)

• 通過[UIDevice currentDevice]可以獲取這個單粒對象

• UIDevice對象會不間斷地發布一些通知,下列是UIDevice對象所發布通知的名稱常量:

 Ø UIDeviceOrientationDidChangeNotification // 設備旋轉

 Ø UIDeviceBatteryStateDidChangeNotification // 電池狀態改變

 Ø UIDeviceBatteryLevelDidChangeNotification // 電池電量改變

 Ø UIDevicePRoximityStateDidChangeNotification // 近距離傳感器(比如設備貼近了使 用者的臉部)

七、鍵盤通知

• 系統發出鍵盤通知時,會附帶一下跟鍵盤有關的額外信息(字典),字典常見的key如下:

鍵盤狀態改變的時候,系統會發出一些特定的通知          ØUIKeyboardWillShowNotification // 鍵盤即將顯示   ØUIKeyboardDidShowNotification // 鍵盤顯示完畢 ØUIKeyboardWillHideNotification // 鍵盤即將隱藏 ØUIKeyboardDidHideNotification // 鍵盤隱藏完畢 ØUIKeyboardWillChangeFrameNotification // 鍵盤的位置尺寸即將發生改變 ØUIKeyboardDidChangeFrameNotification // 鍵盤的位置尺寸改變完畢

Ø

UIKeyboardFrameBeginUserInfoKey // 鍵盤剛開始的frame

Ø UIKeyboardFrameEndUserInfoKey // 鍵盤最終的frame(動畫執行完畢后)

Ø UIKeyboardAnimationDurationUserInfoKey // 鍵盤動畫的時間

Ø UIKeyboardAnimationCurveUserInfoKey // 鍵盤動畫的執行節奏(快慢)

八、通知和代理的選擇

•共同點

Ø利用通知和代理都能完成對象之間的通信 (比如A對象告訴D對象發生了什么事情, A對象傳遞數據給D對象)

•不同點

 Ø代理 : 一對一關系(1個對象只能告訴1個對象發生了什么事情)

 Ø通知 : 多對多關系(1個對象能告訴N個對象發生了什么事情, 1個對象能得知N個對象發 生了什么事情)

 

 

 

 

 

 

 

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区直播精品电影| 色综合久久久888| 国产日韩换脸av一区在线观看| 国产成+人+综合+亚洲欧美丁香花| 国产精品一区二区在线| 91精品国产91久久久久久吃药| 最近2019年日本中文免费字幕| 国产日韩在线看片| 日韩激情视频在线| 日本欧美在线视频| 亚洲午夜色婷婷在线| 久久久欧美一区二区| 久久免费观看视频| 日韩网站免费观看| 国产精品18久久久久久麻辣| 日韩av免费看网站| 在线电影欧美日韩一区二区私密| 亚洲美女动态图120秒| 国产精品黄视频| 欧美激情精品久久久| 日韩在线小视频| 久久国产天堂福利天堂| 日韩在线视频线视频免费网站| 一本一本久久a久久精品综合小说| 精品动漫一区二区| 欧美视频在线视频| 中文字幕精品国产| 97人洗澡人人免费公开视频碰碰碰| 精品视频在线播放色网色视频| 日韩一区二区av| 亚洲久久久久久久久久| 这里只有精品在线观看| 国内精品久久久久久久久| 国产成人拍精品视频午夜网站| 亚洲自拍小视频免费观看| 第一福利永久视频精品| 国产成人精品视频| 日韩中文字幕av| 国产成人一区二区三区电影| 国产久一一精品| 国内精品小视频| 日韩欧美精品在线观看| 九九精品在线视频| 日韩欧美在线视频| 97色在线观看免费视频| 日韩中文字幕视频| 日韩av在线播放资源| 亚洲国产天堂久久国产91| 亚洲欧美激情一区| 欧美在线免费观看| 96精品视频在线| 亚洲男人天堂2023| 欧美性猛交xxxxx免费看| 欧美性理论片在线观看片免费| 7m精品福利视频导航| 久久国产精彩视频| 国产视频久久久久| 91在线网站视频| 欧美尺度大的性做爰视频| 亚洲综合一区二区不卡| 日本不卡免费高清视频| 亚洲精品成人免费| 国产日韩欧美视频在线| 国产精品一区二区在线| 国产精品高潮粉嫩av| 色偷偷av一区二区三区乱| 中文字幕亚洲欧美日韩在线不卡| 性欧美长视频免费观看不卡| 午夜精品一区二区三区在线播放| 国产精品久久久久久久久久尿| 亚洲天堂开心观看| 欧美电影在线观看完整版| 欧美激情精品久久久久久蜜臀| 国产精品一区二区3区| 91禁国产网站| 国产精品看片资源| 精品久久中文字幕久久av| 伊人伊成久久人综合网小说| 亚洲免费视频网站| 欧美人与物videos| 国产日韩亚洲欧美| 久久久成人精品视频| 国产精品第1页| 国模精品视频一区二区| 日本最新高清不卡中文字幕| 国产精品444| 最近中文字幕2019免费| 国产精品久久久久久久久免费看| 精品国产乱码久久久久久虫虫漫画| 亚洲精品美女在线| 亚洲亚裔videos黑人hd| 日韩一区在线视频| 日韩精品有码在线观看| 欧美亚洲午夜视频在线观看| 成人网在线免费观看| 亚洲成人亚洲激情| 日韩av在线导航| 日韩中文字幕不卡视频| 久久视频中文字幕| 91精品国产91久久久久久| 日韩网站免费观看高清| 成人在线视频网| 国产日韩在线看| 日韩精品视频三区| 欧美性猛交xxxx免费看久久久| 国产精品美女久久久免费| 国产欧美日韩免费看aⅴ视频| 欧美日韩成人在线观看| 欧美在线视频免费| 久久综合网hezyo| 国产精品高潮呻吟久久av黑人| 成人欧美在线视频| 在线视频欧美性高潮| 97在线观看免费高清| 91夜夜未满十八勿入爽爽影院| 欧美日韩国产综合新一区| 国产精品爽黄69天堂a| 日韩av在线直播| 日韩精品极品毛片系列视频| 日韩免费不卡av| 日韩av最新在线观看| 欧洲永久精品大片ww免费漫画| 国产精品永久免费观看| 亚洲视频综合网| 亚洲一区二区日本| 国产一区二区三区视频在线观看| 在线观看成人黄色| 亚洲国产精品va| 色伦专区97中文字幕| 国产99视频精品免视看7| 国产日韩欧美在线| 国产精品欧美日韩久久| 伊人激情综合网| 9.1国产丝袜在线观看| 久久久伊人日本| 亚洲精品一区久久久久久| 亚洲欧美日本另类| 北条麻妃一区二区三区中文字幕| 国产视频亚洲视频| 久久亚洲国产精品成人av秋霞| 91久久精品日日躁夜夜躁国产| 欧美精品videofree1080p| 深夜福利日韩在线看| 亚洲精品aⅴ中文字幕乱码| 欧美最顶级丰满的aⅴ艳星| 亚洲美女激情视频| 91福利视频在线观看| 久久人人爽人人| 欧美精品在线免费播放| 国产69久久精品成人| 日韩视频亚洲视频| 亚洲tv在线观看| 亚洲欧美999| 日韩中文字在线| 精品丝袜一区二区三区| 欧美激情精品久久久久久| 欧美日韩国产成人高清视频| 在线观看国产精品日韩av| 成人免费看片视频| 久久国产精品久久久久久| 国产成人精品av在线| 欧美黄色片视频| 中文字幕精品一区二区精品| 久久天天躁狠狠躁夜夜躁|