通知中心NSNotificationCenter的使用
通知中心NSNotificationCenter的使用

Cocoa框架中,通知中心以及KVO都属于设计模式中的观察者.
Source
在使用通知中心之前,对通知中心类进行了简单的封装,以便可读性更强.
NotificationCenter.h + NotificationCenter.m


通知中心发送消息的核心为,发送消息需要一唯一标示符flag来确认接受消息的对象.通知中心只是中介,它起着发送消息的作用.
我们来给一个model对象注册通知中心,在这个对象初始化的时候就注册,这个对象在销毁的时候就移除.


Usage
以下是使用情况以及相应的打印信息.

用起来是不是很简单呢:).
Compare
通知中心与KVO的区别:
1. 发送机制的区别
通知中心自身就是中介者,两个对象之间的通信通过中介者这个桥梁来发送信息.发送方不需要注册任何的信息,所有的配置都由注册方控制.
KVO是两个对象之间直接进行通信,发送通知信息的一方(对象)的注册键值发生变化的时候,会发送信息给被通知方.发送方主动添加被发送方注册信息,被发送方还需要实现一个方法,两方之间都需要进行些配置,使用稍有不当就会导致崩溃.
通知中心 3者间的关系
KVO 2者间的关系
2. 使用的细节
KVO属于被动发送消息,发送消息方的值改变了(一般都是被动改变的),才会发送信息给被发送方,通知中心属于主动发送消息.
通知中心 主动
KVO 被动
3. 使用难易程度
通知中心简单暴力直白,KVO用着恶心,但恶心不代表不要用哦.
通知中心 简单
KVO 复杂
通知中心NSNotificationCenter的使用的更多相关文章
- iOS中通知中心NSNotificationCenter应用总结
通知中心(NSNotificationCenter)实际是在程序内部提供了一种广播机制.把接收到的消息,根据内部的消息转发表,将消息转发给需要的对象.这句话其实已经很明显的告诉我们要如何使用通知了.第 ...
- iOS 通知中心 NSNotificationCenter
iOS开发中,每个app都有一个通知中心,通知中心可以发送和接收通知. 在使用通知中心 NSNotificationCenter之前,先了解一下通知 NSNotification. NSNotific ...
- iOS开发之通知中心(NSNotificationCenter)
前言 面向对象的设计思想是把行为方法封装到每一个对象中,以用来增加代码的复用性.正是这种分散封装,增加了对象之间的相互关联,总是有很多的对象需要彼此了解以及相互操作! 一个简单示例说明这种交互产生的对 ...
- iOS基础 - 通知中心(NSNotificationCenter)
通知中心(NSNotificationCenter) 每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信 任何一个对象都可以向通知中心发 ...
- IOS中通知中心(NSNotificationCenter)
摘要 NSNotification是IOS中一个调度消息通知的类,采用单例模式设计,在程序中实现传值.回调等地方应用很广. IOS中通知中心NSNotificationCenter应用总结 一.了 ...
- 通知中心 NSNotificationCenter 的简单使用方法
NSNotificationCenter(通知中心) [注意]需再dealloc中移除观察者 获取通知中心单例对象 NSNotificationCenter *center=[NSNotifi ...
- iOS中通知中心(NSNotificationCenter)的使用总结
一.了解几个相关的类 1.NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量. 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象. @property (readon ...
- 通知中心 NSNotificationCenter
NSNotificationCenter 通知中心提供了一种在程序内广播信息的途径,一个NSNotificationCenter对象本质上是一个通知分发表(notification dispatch ...
- iOS 设计模式-NSNotificationCenter 通知中心
通知介绍 每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信 任何一个对象都可以向通知中心发布通知(NSNotification),描述 ...
随机推荐
- 新找到一个安装Android SDk的方法-记录
此方法需使用国内的镜像,但是国内镜像网速不一定要很快. 迅雷下载工具这个是必须的. 今天注意到SDK目录下有一个temp文件夹,打开看了看发现就是缓存的目录,因此想到直接从镜像站下载相应的包来替换,测 ...
- Microsoft OneScript 团队发布的最新一版在 SQL Server Management Studio 中运行的脚本,可以帮助我们获取更详细的版本信息。
该脚本有以下几点: 1. SQL Server 的主要版本.服务级别和版本类别 2. 已安装SP包.累计更新CU,历史更新的QFE\ GDR 3. 推荐当前SP包可以安装最新的CU,并给到相关资源地地 ...
- 在SQL Server里如何进行页级别的恢复
在今天的文章里我想谈下每个DBA应该知道的一个重要话题:在SQL Server里如何进行页级别还原操作.假设在SQL Server里你有一个损坏的页,你要从最近的数据库备份只还原有问题的页,而不是还原 ...
- .net 中读取自定义Config文件
今天做一个windows插件式服务程序,插件有时要读取配置文件的设置,但是服务是动态加载到服务上的,没有办法作到动态修改服务的配置文件(app.config).在.net 2.0中有一个Configu ...
- 调试报“The source file is different from when the module was built.”问题的解决
It is related to the checksums which is used to ensure that you are stepping in matching source. You ...
- 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能
[源码下载] 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能 作者:webabcd 介绍与众不同 windows ...
- Array(数组)与Json String (Json字符串) 的相互转换
1.Array转换成Json String function jsonToString(arr) { var s = ""; ...
- POSTMAN and HTTPie to test APIs
http://blog.mashape.com/postman-httpie-test-apis/ We love working with APIs at Mashape, and we love ...
- docker与虚拟机性能比较
http://blog.csdn.net/cbl709/article/details/43955687www.chenbiaolong.com 概要 Docker是近年来新兴的虚拟化工具,它可以和虚 ...
- kfreebsd不适用于实际环境
debian搞的kfreebsd,其中有很多常用的软件包处于依赖破损的状态,个人觉得是无法用作日常开发或生产环境的. 当然,对于只使用其中几项完整可用功能的场景,基本上还是可以的. 当时看个这个东东的 ...