一、什么是 KVO 首先让我们了解一下什么KVO,全称为Key-Value Observing,是iOS中的一种设计模式,用于检测对象的某些属性的实时变化情况并作出响应。键值观察Key-Value-Observer就是观察者模式。 观察者模式的定义:一个目标对象管理所有依赖于它的观察者对象,并在它自 ...
分类:
其他好文 时间:
2016-05-06 18:58:03
阅读次数:
185
检查主线程卡顿的方法有两个 1.通过主线程runloop添加observer,观察runloop状态变化,不难发现NSRunLoop调用方法主要就是在kCFRunLoopBeforeSources和kCFRunLoopBeforeWaiting之间,还有kCFRunLoopAfterWaiting之 ...
分类:
编程语言 时间:
2016-05-05 00:14:33
阅读次数:
432
(一)观察者模式简介 1、定义:定义对象间一种一对多的依赖关系,一个对象状态发生改变时,所有依赖它的对象都会接到通知并作出相应的响应。 2、应用场景: (1)GUI系统 (2)订阅-发布系统 (3)事件多级触发场景 (4)当一个对象改变时需要通知其他对象,但不知道有其他对象具体有哪些时 3、UML类 ...
分类:
编程语言 时间:
2016-05-01 06:28:05
阅读次数:
365
设计模式 ( 十六 ) 观察者模式Observer(对象行为型) 1.概述 一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力。当对象们连接在一起时,它们就可以相互提供服务和信息。 通常来说,当某个对象的状态发生改变时,你仍然需要对象之间能互相通信。但是出于各种原因,你也许并不愿意因为代 ...
分类:
其他好文 时间:
2016-04-30 11:22:51
阅读次数:
119
Please indicate the source: http://blog.csdn.net/gaoxiangnumber1
Welcome to my github: https://github.com/gaoxiangnumber1
?读者应具有C++多线程编程经验,熟悉互斥器、竞态条件等概念,了解智能指针,知道Observer设计模式。
1.1 当析构函数遇到多线程
?C++要求...
分类:
其他好文 时间:
2016-04-30 06:40:51
阅读次数:
365
Please indicate the source: http://blog.csdn.net/gaoxiangnumber1
Welcome to my github: https://github.com/gaoxiangnumber1
1.8 应用到 Observer 上
?既然通过 weak_ptr 能探查对象的生死,那么 Observer 模式的竞态条件就很容易解决,只要让Obse...
分类:
其他好文 时间:
2016-04-30 06:38:37
阅读次数:
347
1,概述:
(1) 这个模式是类与类之间的关系,不涉及到继承,观察者模式很好理解,类似于邮件
订阅和RSS订阅,当我们浏览一些博客或者wiki(维基百科)时,经常会看到RSS图标,这就
是说,当你订阅了该文章,如果后续有更新,会及时通知你,其实,简单一句话就是说:当
一个对象变化时,其他依赖该对象的对象都会收到通知,并且随着变化,对象之间是一种
一...
分类:
编程语言 时间:
2016-04-29 18:33:51
阅读次数:
181
定义对象见的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式的角色
1. 抽象主题角色(Subject):把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。
2. 具体主题角色(ConcreteSubject):在具体主题内部状态改...
分类:
其他好文 时间:
2016-04-29 18:15:21
阅读次数:
114
基本概念Observer
观察者模式(Observer Pattern)又称为发布订阅模式(Publish/subscribe)
定义对象间的一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并且自动更新
根据单一职责原则,每个类的职责是单一的,我们可以通过触发机制,形成一个触发链,把各个单一的职责串联成真实世界中的复杂的逻辑关系。
观察者模式的角色分工(JDK中提供了...
分类:
编程语言 时间:
2016-04-29 18:02:58
阅读次数:
220
count
count 函数和 Java 集合中的 size 或者 length 一样。用来统计源 Observable 完成的时候一共发射了多少个数据。 Observable values = Observable.range(0, 3);
values.subscribe(new Observer() {...
分类:
编程语言 时间:
2016-04-29 16:28:45
阅读次数:
264