麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

ios NSNotificationCenter通知的簡單使用

2019-10-21 18:41:01
字體:
供稿:網(wǎng)友

通知類本身比較簡單,大概就分為注冊通知監(jiān)聽器、發(fā)送通知,注銷通知監(jiān)聽器三個方法;通知中心(NSNotificationCenter)采用單例的模式,整個系統(tǒng)只有一個通知中心,通過如下代碼獲取:

//獲取通知中心[NSNotificationCenter defaultCenter];

注冊通知監(jiān)聽器方法:

//observer為監(jiān)聽器//aSelector為接到收通知后的處理函數(shù)//aName為監(jiān)聽的通知的名稱//object為接收通知的對象,需要與postNotification的object匹配,否則接收不到通知- (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSNotificationName)aName object:(nullable id)anObject;

發(fā)送通知的方法:

//需要手動構造一個NSNotification對象- (void)postNotification:(NSNotification *)notification;//aName為注冊的通知名稱//anObject為接受通知的對象,通知不傳參時可使用該方法- (void)postNotificationName:(NSNotificationName)aName object:(nullable id)anObject;//aUserInfo為將要傳遞的參數(shù),類型為字典類型//通知需要傳參數(shù)時使用下面這個方法,其他同上。- (void)postNotificationName:(NSNotificationName)aName object:(nullable id)anObject userInfo:(nullable NSDictionary *)aUserInfo;

注銷通知監(jiān)聽器方法:

//刪除通知的監(jiān)聽器- (void)removeObserver:(id)observer;//刪除通知的監(jiān)聽器,aName監(jiān)聽的通知的名稱,anObject監(jiān)聽的通知的發(fā)送對象- (void)removeObserver:(id)observer name:(nullable NSNotificationName)aName object:(nullable id)anObject;//以block的方式注冊通知監(jiān)聽器- (id <NSObject>)addObserverForName:(nullable NSNotificationName)name object:(nullable id)obj queue:(nullable NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *note))block API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0));

使用情況:

NSNotificationCenter類一般用于一個對象傳遞事件給另外一個對象,在另一個對象中觸發(fā)某些方法,可以實現(xiàn)跨視圖的交互。我在最近一個月內(nèi)用到了兩次NSNotificationCenter類。

①在對項目進行國際化時,在切換語言時采用通知的方式,使其他界面進行刷新(需要在主線程內(nèi))。

②使用SGPagingView時,需要實現(xiàn)pageContentView中的內(nèi)容在多選狀態(tài)時,pageTitleView禁止進行切換的功能。看了SGPagingView提供的方法是沒有這個的,所以就采用了NSNotificationCenter。在進入多選狀態(tài)時發(fā)一條通知,在退出多選狀態(tài)時發(fā)一條通知(方法比較簡陋,如果有更好的方法請不吝賜教)。

//注冊通知監(jiān)聽器  [NotifyUtil addNotify:NOTIFY_DISABLE_SWITCH Observer:self selector:@selector(disableSwitch) Object:nil];  [NotifyUtil addNotify:NOTIFY_ALLOW_SWITCH Observer:self selector:@selector(allowSwitch) Object:nil];//調(diào)用方法//禁止pageTitleView進行切換-(void)disableSwitch{  self.pageTitleView.userInteractionEnabled = NO;}//允許pageTitleView進行切換-(void)allowSwitch{  self.pageTitleView.userInteractionEnabled = YES;}//注銷通知監(jiān)聽器- (void) dealloc{  [NotifyUtil removeNotify:NOTIFY_DISABLE_SWITCH Observer:self];  [NotifyUtil removeNotify:NOTIFY_ALLOW_SWITCH Observer:self];}

注:用NotifyUtil對NSNotificationCenter類進行了一個簡單的封裝,參數(shù)基本都一致,就不貼NotifyUtil的代碼了。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 天天碰天天操 | 国产午夜亚洲精品理论片大丰影院 | 久久久久久99 | 久久亚洲综合色 | 成人福利视频 | 黄色小视频在线免费看 | av电影在线免费观看 | 日本一区二区高清不卡 | 国产精品视频亚洲 | 国产成人在线视频播放 | 中国老女人一级毛片视频 | 久久久久久亚洲国产精品 | 青青草成人免费视频在线 | 久久国产精品久久精品国产演员表 | 亚洲天堂一级片 | 亚洲一区二区三区精品在线观看 | 国产亚洲精品久久久久久网站 | 国产精品www | 亚洲一级网站 | 国产一级午夜 | 男女羞羞视频在线观看免费 | 福利在线国产 | 久久久久久久免费看 | 特黄一区二区三区 | 欧美黑人一级 | 香蕉视频破解 | 成人午夜激情网 | 性高跟鞋xxxxhd4kvideos | www.99re1.com| 日本在线播放一区二区三区 | 久久影城 | 久久精品av| 看国产毛片 | 欧美性生交xxxxx免费观看 | 久久精品久久久久 | 国产91精品一区二区麻豆亚洲 | 91在线免费观看 | 国内免费视频成人精品 | 99视频有精品视频高清 | 欧美日韩中文字幕在线 | 九九热国产视频 |