观察者模式(一对多)

一、观察者模式简介

在观察者模式中,一个对象的某个状态发生改变时,都会通知另外的对该改变感兴趣的对象。这些对象之间不需要知道彼此的存在,这其实是一种松耦合的设计。观察者注册自己感兴趣的对象的状态变更事件,当被观察者状态发生变化的时候,所有的观察者都会得到通知。

 

二、Notifications

NSNotificetioncCenter: 每个应用程序都有一个通知中心,用来协调不同对象之间的消息通信,一个完整的通知需要包含三要素:

name:通知名字

id:发布者

userinfo通知携带的信息内容

 

2.1、发布通知

    [[NSNotificationCenter defaultCenter]  postNotificationName:@"tzname" object:self userInfo:@{ @"title" : @"两会Duang开始了"}];

 

2.2、监听通知

    监听通知一定要在发布通知之前,否则,会导致,一个通知已经发出了,但是漏监听了,当监听到一个通知的时候,可以读取这个通知的NSNotification报信息

    [[NSNotificationCenter defaultCenter] addObserver:listener selector:@selector(dowhat:) name:@"tzname1" object:sender1]

 

2.3、移除监听(一般在dealloc中移除监听)

      当一个对象在销毁之前,必须先移除自己所有的监听,因为NSNotificationCenter不会理会对象是否存在,就会直接把通知传送过去,如果对象已经被销毁,但是监听依然存在,程序就会奔溃

    [[NSNotificationCenter defaultCenter] removeObserver:self] 

 

三、KVO

在ObjC中使用KVO操作常用的方法如下:

  • 注册指定Key路径的监听器: addObserver: forKeyPath: options:  context:
  • 删除指定Key路径的监听器: removeObserver: forKeyPathremoveObserver: forKeyPath: context:
  • 回调监听: observeValueForKeyPath: ofObject: change: context:

 

 


 

转载于:https://www.cnblogs.com/hepingqingfeng/p/5462698.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值