最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ios NSNotificationCenter通知的簡單使用

 更新時間:2018年06月07日 11:04:36   作者:墨_辰  
這篇文章主要介紹了ios NSNotificationCenter通知的簡單使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

通知類本身比較簡單,大概就分為注冊通知監(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ā)送通知的方法:

//需要手動構(gòu)造一個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類。

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

②使用SGPagingView時,需要實現(xiàn)pageContentView中的內(nèi)容在多選狀態(tài)時,pageTitleView禁止進(jìn)行切換的功能??戳薙GPagingView提供的方法是沒有這個的,所以就采用了NSNotificationCenter。在進(jìn)入多選狀態(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進(jìn)行切換
-(void)disableSwitch{
  self.pageTitleView.userInteractionEnabled = NO;
}
//允許pageTitleView進(jìn)行切換
-(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類進(jìn)行了一個簡單的封裝,參數(shù)基本都一致,就不貼NotifyUtil的代碼了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

孟村| 水富县| 宝山区| 瓦房店市| 石楼县| 崇文区| 宁阳县| 抚松县| 柳江县| 高淳县| 什邡市| 北碚区| 贵州省| 遵义市| 永登县| 福贡县| 宜昌市| 崇州市| 诸城市| 乌拉特前旗| 永昌县| 剑河县| 淮阳县| 孟州市| 衡阳市| 新乐市| 米易县| 屏边| 威宁| 汽车| 嘉禾县| 五常市| 昭平县| 临湘市| 根河市| 即墨市| 林芝县| 库尔勒市| 陇西县| 广东省| 綦江县|