文章标题
2015-08-06 16:07
274 查看
通知
通过学习’KVO’,我们发现’KVO’是一种简单的观察者设计模式,涉及到两个对象,分别是观察者和被观察者。这种方式实质上有很大的局限性,那么OC的’Foundation’框架,在基于’KVO’的基础上又为开发者提供了一种新的观察者设计模式,即’通知’。通知是一种发送给一个或者多个观察者用来通知其在程序中发生了某个时间的消息。它是一种程序中时间的发起者(处理者)和其他想要知道该事件的对象的沟通的一种方式。消息的接受者,即观察响应该事件来变换自己的UI、行为或状态。
在OC中,使用’NSNotification’类来初始化一个通知,
//初始化一个NSNotification类的实例对象 NSNotification *notification = [NSNotification notificationWithName:@"通知的名称" object:self]; NSNotification *notification2 = [NSNotification notificationWithName:@"通知名称" object:self userInfo:@{@"content":@"JAY on living"}];
其中:
1.name:表示通知名称,最好英文名,用来识别通知对象
2.object:表示通知的发起人
3.userInfo:表示通知的内容
在现在生活中,我们的邮件都需要由邮局发送给接收人。在OC中也一样,’Founddation’框架定义了一个单例类,通知中心’NSNotificationCenter’来统一发送通知的实例对象给观察者
//通知中心 单例类 NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; //通知中心发送通知 [center postNotification:notification1];
简便写法,通知中心直接发送通知
// [center postNotificationName:(NSString *) object:(id)]; // [center postNotificationName:(NSString *) object:(id) userInfo:(NSDictionary *)];
建立通知发送机制,步骤如下:
1.注册相关监听者,并实现监听收到通知时的方法
2.在需要的时候,被监听的对象去通知中心发送通知
3.在’dealloc’方法中,移除通知
相关文章推荐
- Java 接口的概念
- 为Python配置caffe(基于linux)
- IOS学习之ios应用数据存储方式(XML属性列表-plist)
- JointJS
- java 权限设计
- Theano2.1.3-基础知识之更多的例子
- 版本管理之-git的简单使用
- [Java Web]Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors
- Arcgis中对矢量和栅格数据进行裁剪切割的方法
- 虚拟机装系统出现 ntldr is missing(NTLDR丢失)、无法正常开机、解决方法
- TCP中的RST复位信号
- HTML5音频Audio
- Hive JOIN使用详解
- DotNet MVC 不允许子操作执行重定向操作
- JS页面加载的几种方式
- hdu 1232 畅通工程
- 制作TTF格式的字体
- 线程安全与并发编程探究(六)-死锁举例
- poj 22515 Dungeon Master
- bzoj2066: [Poi2004]Gra