时间:2021-05-20
网上经常说iOS的通知机制是使用了观察者模式,里面有两个角色,其一是poster(发送者),另一个是observer(接受信息的订阅者)。但我认为重要的角色是通知中心,它是整个通知机制的核心,有poster发送者发送的消息必定要到达通知中心,再由通知中心根据这个消息被哪些observer订阅者订阅过,就把消息往那些订阅者去分发。整体可以与现在的电子邮件结构作类比的。
但要额外说明一下,iOS的通知虽然也叫Notification通知,但是与Android中的通知是不一样的,在Android中的通知是一种消息推送的形式,而在iOS中肯定也有消息推送,这就是推送机制那部分的内容。说会这个通知机制的其实就是原本在学习C#时的事件,只不过这里的事件是对于整个系统的全局事件,任何一方往系统的这个全局事件去注册绑定了方法,到事件被触发的时候就能够被执行。
整个通知的操作流程,我们只需要把poster和observer设置好就可以了
对于Poster的操作比较简单,他只需要往通知中心推通知就可以了,采用以下的代码
或者
NotificationWithName: object: 方法还有一个重载就是有userInfo: 参数,它是NSDictionary的字典类型,就是用于传递用户参数。
对于Observer则相对没Poster那么简单,在C#中进行事件注册绑定的时候也发现,触发事件的只需要像调用方法那样子调用就可以了,但是注册那一方则需要为事件绑定方法,又要定义方法,而在iOS的通知机制中,需要注册,回调处理(就是事件中的方法定义),用完了还要去删除。
注册
这里的参数是跟postNotificationName: object:对应的。注册了哪个通知name参数就填上对对应的值
回调处理
删除
在使用消息完毕(就是不再对接收到的消息作处理的)之后,需要进行删除操作
补充:
ios中观察者模式与通知机制,及KVO
在ios开发中,通知机制和KVO都是依靠观察者模式得以实现。通知机制与KVO的不同之处在于,前者是一个中心对象为所有观察者提供变更通知,后者是被观察对象直接向观察者发送通知。
以下关注观察者模式与通知机制实现:
1、观察者模式中Subject对象,又可称目标对象,是通知的发布者,又是被观察者。提供注册和取消注册的方法;Observer对象,又可称为观察者,是通知的订阅者。Observer类中,相识Subject,以达到能够接收通知。
2、ios中的通知机制,是Cocoa Touch框架为开发者开发的类,让开发者不必自己写观察者模式,用到它便能实现。对于我而言,通知机制的所有使用,都集中到一个类中。而导致我用通知机制去理解观察者模式时,迷糊于Subject和Observer,谁是通知的发送者,因为类中集结了观察者和发送者。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
ios系统和安卓系统的区别有: 1、两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。 2、两者后台制度不同:IOS中任何第三方程序
iOS系统通知中心的今日通知可以非常方便用户查看今日的重要日程和事项。在iOS8正式版中,今日通知的设置变得简便,在通知中心就可以直接编辑。当然,用户减少在
一.前言 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情。iOS
本文实例讲述了Android编程获取通知栏高度的方法。分享给大家供大家参考,具体如下:这里通过反射机制获取通知栏高度通知栏高度写在dimen文件中:public
众所周知,iOS8中通知中心WIDGET的开放为iOS开启了新的篇章,各类着力于通知中心WIDGET的APP也逐渐完备。在日常APP的附属WIDGET之外,