美文网首页
day11- 模拟通知

day11- 模拟通知

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

购物车01-搭建基本骨架
购物车02-圆角按钮处理
购物车03-显示数据
购物车04-加号减号点击处理

NSNotification - 通知
NSNotificationCenter - 通知中心


怎么发布通知?

  • 注意顺序

    • 通知中心,注册监听器,
      然后创建通知, 接着 '通知中心',发布通知,
      最后监听者销毁前,移除通知
  • NSNotificationCenter需要做哪些 ?

    • '通知中心'注册监听器.
    • '通知中心'发布通知.
    • dealloc'监听者对象'销毁前,移除监听。
       - (void)dealloc{
        [[NSNotificationCenter defaultCenter] removeObserver:self];
      }
      
  • NSNotification需要做哪些?

    • 创建'通知'
    • 可以不创建,因为在NSNotificationCenter里面有方法创建。
  • 示例代码

    • 监听者:p1, 通知发布者:compAL.
      当'compAL'发布了'通知',就调用监听者P1的getMessage: 方法。
      //注册监听器
      [[NSNotificationCenter defaultCenter] addObserver:p1 selector:@selector(getMessage:) name:nil object:compAL];
      //创建 "通知",且将通知发送到 "通知中心"
      [[NSNotificationCenter defaultCenter] postNotificationName:alNoteTest object:compAL];
      [[NSNotificationCenter defaultCenter] postNotificationName:alNoteTemp object:compAL userInfo:@{@"title":@"medical is a  problem"}];
      
    • 匿名通知(没有通知发布者的通知),
      监听者:p2, 通知发布者:nil.
      不管发布者是谁,只要通知名称是'jdNoteTest',就调用监听者的'getNews:'方法*
      [[NSNotificationCenter defaultCenter]addObserver:p2 selector:@selector(getNews:) name:jdNoteTest object:nil];
      [[NSNotificationCenter defaultCenter] postNotificationName:jdNoteTest object:compJD];
      [[NSNotificationCenter defaultCenter] postNotificationName:jdNoteTest object:compAL];
      
    • 监听者: p2, 通知名称: nil
      监听,通知发布者为'compAL'所发布的所有通知
      [[NSNotificationCenter defaultCenter] addObserver:p2 selector:@selector(getNews:) name:nil object:compAL];
      [[NSNotificationCenter defaultCenter] postNotificationName:alNoteTest object:compAL];//✔️
      [[NSNotificationCenter defaultCenter] postNotificationName:jdNoteTemp object:compAL];//✔️
      [[NSNotificationCenter defaultCenter] postNotificationName:alNoteTemp object:compJD];//❌
      
    • 监听者: p2, 通知名称: nil, 通知发布者: nil
      监听所有通知
      [[NSNotificationCenter defaultCenter] addObserver:p2 selector:@selector(getNews:) name:nil object:nil];
      [[NSNotificationCenter defaultCenter]postNotificationName:jdNoteName object:compJD];
      [[NSNotificationCenter defaultCenter]postNotificationName:alNoteName object:compAL];
      

相关文章

网友评论

      本文标题:day11- 模拟通知

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