day11- 模拟通知
2020-07-11 本文已影响0人
js_huh
购物车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];
-
监听者:p1, 通知发布者:compAL.