iOS 通知中心(NSNotificationCenter)

NSNotificationCenter

在这里第一步和第二步的顺序可以互换,一般楼主我喜欢先在需要发送消息的页面发送消息,然后再在需要监听的页面注册监听。要注意的是不管是通知中心还是KVO都需要在页面销毁之前移除监听。

  1. 注册观察者
/**
     *      观察者注册消息通知
     *
     *      @param addObserver 观察者  self
     *
     *      @param selector 回调方法  notification
     *
     *      @param name 消息的名称  notifitionMassage
     *
     *      @param object 发送消息的对象,表示接收哪个发送者的通知,如果第四个参数为nil,则接收所有发送者的通知。
     */
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(notification:)
 name:@"notifitionMassage" object:nil];
复制代码
  1. 发送消息通知
/**
     *      发送消息通知
     *
     *      @param postNotificationName 发送消息的名称  notifitionMassage 这里一定要和观察者中消息的名称一致,否则监测不到消息
     *
     *      @param object 发送消息的对象  如果这里填nil,而且观察者要监测同时监测了好几个消息,但是这里我们只需要这一条特定的消息的时候,此时就无法达到我们想要的
     *                    结果了。
     */
    [[NSNotificationCenter defaultCenter]postNotificationName:@"notifitionMassage" object:nil];
复制代码
  1. 观察者处理消息(这个方法也就是观察者的回调方法)
/**
 *      观察者处理消息(这个方法也就是观察者的回调方法)
 *
 *      @param massage 接收到消息的信息,主要用于传值。(里面包含了Name:消息的名称 object:消息的发送者 userInfo:消息传递的数据信息)
 */
-(void)notification:(NSNotification *)massage{
//在这里做我们想要的操作
}
复制代码
  1. 注销观察者

a. 最好的办法就是在注册观察者的页面的dealloc方法中去移除观察者

-(void)dealloc{
    /**
     *      移除观察者的方法
     *
     *      @param removeObserver 监听的对象  self
     *
     *      @param name  消息的名称
     *
     *      @param object 发送消息的对象  如果发送消息的时候填写了对象,那么这里就是那个对象
     */
[[NSNotificationCenter defaultCenter]removeObserver:self];
}
复制代码

b. 单个移除

[[NSNotificationCenter defaultCenter]removeObserver:self name:@"notifitionMassage" object:nil];
复制代码
复制代码

转载于:https://juejin.im/post/5c1a0df85188257c1260f6cd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值