通知NSNotification

作者: 追逐_chase | 来源:发表于2017-01-09 15:02 被阅读88次

通知中心

  • 通知中心-- 每一个应用程序中都有一个NSNotificationCenter的实例(对象),它是负责帮助不同的 对象 进行消息通信,
  • 任何一个 对象都可以向 通知中心发布通知,描述自己在做什么事情,其他感兴趣的对象可以可以接收这个通知
1.png

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

通知

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

  • -(NSString *)name; // 通知的名称
  • -(id)object; // 通知发布者(是谁要发布通知)
  • -(NSDictionary *)userInfo; // 一些额外的信息(通知发布者传递给通知接收者的信息内容)

初始化一个通知对象

  • +(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;
创建通知的步凑
  • 发布通知
  • 监听通知
  • 处理通知
  • 移除通知
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];

通知多线程中的作用





相关文章

  • NSNotification

    发通知 NSNotification *deleteMyCommemtN =[NSNotification not...

  • iOS 中通知机制NSNotification

    iOS 中通知机制详解 NSNotification 通知的对象,一条通知就是一个NSNotification对象...

  • 推送通知-本地推送

    iOS推送通知 注意:这里说的推送通知跟NSNotification有所区别 NSNotification是抽象的...

  • iOS 推送后台语音播报

    推送通知 注意:这里说的推送通知跟NSNotification有所区别 NSNotification是抽象的,不可...

  • iOS本地推送

    1. 推送通知简介 1.1: 这里说的推送通知跟NSNotification有所区别 NSNotification...

  • NSNotification 通知

    +++Categories = ["iOS",]Tags = ["iOS","NSNotification",]d...

  • 通知——NSNotification

    转自http://blog.sina.com.cn/s/blog_6317728d0102v779.html不会格...

  • 通知NSNotification

    通知中心 通知中心-- 每一个应用程序中都有一个NSNotificationCenter的实例(对象),它是负责帮...

  • 通知NSNotification

    通知基本使用,如图 需要注意的有两点: 1.使用通知,一定要先创建监听者,再发送通知,不然是接收不到通知的。 2....

  • NSNotification - 通知

    是什么? 一个完整的通知,包含3个属性:@property (readonly, copy) NSNotifica...

网友评论

本文标题:通知NSNotification

本文链接:https://www.haomeiwen.com/subject/bzfhbttx.html