美文网首页
NSNotification - 通知

NSNotification - 通知

作者: js_huh | 来源:发表于2020-07-10 17:55 被阅读0次

是什么?

  • 一个完整的通知,包含3个属性:
    @property (readonly, copy) NSNotificationName name;
    @property (nullable, readonly, retain) id object;
    @property (nullable, readonly, copy) NSDictionary *userInfo;
    
    name 通知的名称,
    object 通知发布者(是谁要发布通知,可以是'监听者')
    userInfo 用户信息字典(通知发布者传递给通知接收者 [监听者] 的信息内容)
  • NSNotificationName 其实是NSString *的别名!
    typedef NSString *NSNotificationName;

怎么使用?

  • + notificationWithName: object:
    返回具有指定名称和对象的新通知对象

    + (instancetype)notificationWithName:(NSNotificationName)aName 
                                  object:(id)anObject
    
  • + notificationWithName: object: userInfo:
    返回具有指定名称,对象和用户信息的通知对象

    + (instancetype)notificationWithName:(NSNotificationName)aName 
                                  object:(id)anObject 
                                userInfo:(NSDictionary *)aUserInfo;
    
  • - init 初始化一个空的通知。

  • - initWithCoder:使用未归档的程序(如 plist文件)的数据, 来初始化通知
    - (instancetype)initWithCoder:(NSCoder *)coder

  • - initWithName: object: userInfo:
    使用指定的名称,对象和用户信息初始化通知

    - (instancetype)initWithName:(NSNotificationName)name 
                          object:(id)object 
                        userInfo:(NSDictionary *)userInfo
    

示例代码

  • 代码如下 :
     //注册监听器(监听者:p1,监听所有对象发布的所有通知,监听到通知后,调用getMessage:方法)
    [[NSNotificationCenter defaultCenter] addObserver:p1 selector:@selector(getMessage:) name:nil object:nil];
    //创建通知 (通知发布者:compAL/compJD,创建名称为'notificationWithName'的通知)
    NSNotification * noteALText =  [NSNotification notificationWithName:alNoteTest object:compAL userInfo:@{@"title":@"Ara you OK"}];
    NSNotification * noteALTemp = [NSNotification notificationWithName:alNoteTemp object:compAL];
    NSNotification * noteJDText = [[NSNotification alloc]initWithName:jdNoteName object:compJD userInfo:@{@"noneTitle":@"JD come on"}];
    //发布通知
    [[NSNotificationCenter defaultCenter] postNotification:noteALText];
    [[NSNotificationCenter defaultCenter] postNotification:noteALTemp];
    [[NSNotificationCenter defaultCenter] postNotification:noteJDText];
    
      -(void)getMessage:(NSNotification *)note{
        NSLog(@"%@,接收到%@发送的%@,消息内容是:%@",self.name,[note.object name],note.name,note.userInfo);
    }
    
  • 输出结果 :
    张三,接收到阿里巴巴发送的军事新闻-通知,消息内容是:{
        title = "Ara you OK";
    }
    张三,接收到阿里巴巴发送的民生新闻-通知,消息内容是:(null)
    张三,接收到京东发送的717消费券-通知,消息内容是:{
        noneTitle = "JD come on";
    }
    

也可以看看

NSNotificationCenter - 通知中心
模拟通知


来自于哪里?

  • iOS-MJ-UI基础-大神班/day-11/05-模拟通知

相关文章

  • 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/cxqeqktx.html