iOS开发iOS Developer程序员

通知NSNotification

2017-01-09  本文已影响88人  追逐_chase

通知中心

1.png

上述是:A对象发布一个 通知到通知中心,对这个通知 感兴趣的对象B,C,D都可以来监听这个通知,来做一些事情。

通知

一个完整的通知包括3个属性:

初始化一个通知对象

创建通知的步凑
1. 发布通知
 //self这个对象发布了一个名字是 change的通知
 [[NSNotificationCenter defaultCenter] postNotificationName:@"changA" object:self]; 

//self这个对象发布一个changTextAction的通知,并且带有一个@{@"name":@"CC",   @"age":@"18"}]的信息
 [[NSNotificationCenter defaultCenter] postNotificationName:@"changTextAction" object:self userInfo:@{@"name":@"CC",
                                                                                          @"age":@"18"}];

2,监听通知

//self这个对象用TextAction:方法 监听OBJC对象 发布的一个叫做changTextAction的通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(TextAction:) name:@"changTextAction" object:OBJC];

3.处理通知 
TextAction:方法处理通知带来的信息@{@"name":@"CC",   @"age":@"18"}

4,移除通知

-(void)removeObserver:(id)observer;
// 移除observer对象 监听 的 anObject对象发布的名为aName的通知
- (void)removeObserver:(id)observer name:(NSString *)aName object:(id)anObject;

补充

  //监听通知
    //name:通知名称
    //object:谁发的通知
    //queue:队列,决定block在哪一个线程中执行,nil则表示 是和发布通知的线程同步
    //usingBlock:只要监听到通知,就会执行这个block
  
@property(nonatomic, weak) id observe;

  _observe =   [[NSNotificationCenter defaultCenter] addObserverForName:@"name" object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
        
    }];

//注意:这个方法监听通知 但是没有添加观察者  
//解决:其实这个方法有一个返回值(就是观察者)  要定义一个属性接收  然后移除这个观察者

//移除观察者
 [[NSNotificationCenter defaultCenter] removeObserver: _observe];

通知多线程中的作用





上一篇 下一篇

猜你喜欢

热点阅读