日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

iOS开发之通知中心(NSNotificationCenter)

發布時間:2024/4/24 综合教程 55 生活家
生活随笔 收集整理的這篇文章主要介紹了 iOS开发之通知中心(NSNotificationCenter) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

面向對象的設計思想是把行為方法封裝到每一個對象中,以用來增加代碼的復用性。正是這種分散封裝,增加了對象之間的相互關聯,總是有很多的對象需要彼此了解以及相互操作!

一個簡單示例說明這種交互產生的對象之間的相互依賴:

有一個列表框,每當列表框的某一項被選中時,就會彈出一個對話框,對話框包含一個或多個輸入框,在輸入框輸入完畢 輸入的文字要更新要列表中顯示。文字描述有點啰嗦,大家可以想一下QQ的好友列表,這與其類似的!

只是這幾個UI控件之間的交互邏輯就如此的麻煩與復雜。這種對象之間的相互關聯與我們的高復用,低耦合思想是不符合的。并且UI控件的增加,UI控件之間勢必需要相互了解及操作,情況就會變得越來越難以控制,最終整個程序變得難以復用與維護!

通知中心NSNotificationCenter

iOS開發中的通知中心(NSNotificationCenter)機制解決以上的問題!在其他的開發應該也存在相類似的處理機制,這種處理機制的設計模式被稱為中介者模式!

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

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

如下圖:

一個對象要想接收到通知,必須先在通知中心進行注冊。這一點與我們生活中的新聞訂閱是相同的!

注冊通知監聽器

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

- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject;
//observer:監聽器,即誰要接收這個通知
//aSelector:收到通知后,回調監聽器的這個方法,并且把通知對象當做參數傳入
//aName:通知的名稱。如果為nil,那么無論通知的名稱是什么,監聽器都能收到這個通知
//anObject:通知發布者。如果為anObject和aName都為nil,監聽器都收到所有的通知
- (id)addObserverForName:(NSString *)name object:(id)obj queue:(NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *note))block;
//name:通知的名稱
//obj:通知發布者
//block:收到對應的通知時,會回調這個
//blockqueue:決定了block在哪個操作隊列中執行,如果傳nil,默認在當前操作隊列中同步執行

通知

一個完整的通知一般包含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)提供了相應的方法來幫助發布通知

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

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

發布一個名稱為aName的通知,anObject為這個通知的發布者

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

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

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

總結

以上是生活随笔為你收集整理的iOS开发之通知中心(NSNotificationCenter)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线视频免费播放 | 亚洲黄色大片 | 欧美午夜性春猛交 | 97香蕉久久夜色精品国产 | av大全免费 | 欧美熟妇精品一区二区 | 中国字幕av| 黄色一级免费 | 国产精品亚洲欧美在线播放 | 久久激情小说 | 美女三区 | 国产精品第8页 | 麻豆传媒观看 | 红桃视频黄色 | 亚洲欧美高清视频 | av免费网站| 朝桐光一区二区三区 | 亚洲 精品 综合 精品 自拍 | 久久精品视频国产 | 91精品影视 | 超碰人体 | 奇米影视888 | 成年人福利视频 | 国产视频网 | a级黄色一级片 | 久久久久人妻精品一区二区三区 | 蜜桃aaa| 欧美性生活免费视频 | 亚洲美女视频在线观看 | 久久精品视频观看 | 国产精品久久影视 | 少妇脚交调教玩男人的视频 | 久久一区二区视频 | 正在播放国产精品 | 国产第一页在线观看 | 每日av在线| 精品一区二区精品 | 日夜夜操 | 国产精品久久 | 黄色羞羞网站 | 完全免费在线视频 | 老司机午夜精品 | 国产一区二区不卡视频 | 久久久久婷婷 | 91操视频| 精品人妻视频在线 | 久久不卡影院 | 国产午夜一区二区 | 欧美一区二区三区久久妖精 | 爱吃波客今天最新视频 | 国产欧美一区在线观看 | 久久嗨 | 有码一区二区三区 | 欧美bbw视频| 人妻天天爽夜夜爽一区二区三区 | aa视频在线观看 | 久久久91视频 | 午夜一级视频 | 中文字幕在线观看视频一区二区 | 免费观看日韩av | 国内自拍一区 | 人人狠狠综合久久亚洲 | 免费看国产精品 | 成人在线超碰 | 亚洲视频在线播放 | 免费黄色大片网站 | 日本美女a级片 | 日本午夜在线 | 毛片视频网| 91色| 久草国产精品视频 | 色狠狠操| 久久亚洲aⅴ无码精品 | 五月激情丁香网 | 熟女人妻一区二区三区免费看 | 亚洲天堂久久 | 日韩视频在线播放 | 亚洲人成网址 | 亚洲情涩 | 国产日韩不卡 | 国产在线视频一区二区三区 | 中国三级黄色 | 国产精品一区电影 | www.jizzjizz.com| 久草精品国产 | 亚洲精品字幕 | 亚洲色图 美腿丝袜 | 朝桐光在线播放 | 成人av在线网址 | www.成人.com| gv天堂gv无码男同在线观看 | 色诱av手机版 | 夜夜激情网| 97精品人妻一区二区三区香蕉 | 国产乱码在线 | 黄色污在线观看 | 国产三级久久 | 你懂的在线网站 | 国产激情影院 |