IOS设计模式第八篇之键值观察模式
版权声明:原创作品,谢绝转载!否则将追究法律责任。
键值观察模式:
在KVO,一个对象可以要求被通知当他的某个特殊的属性被改变了。自己或者另一个对象。如果你感兴趣你可以阅读更多的信息参考: Apple’s KVO Programming Guide.
怎么用KVO设计模式呢?
正如上面提及到的。这个KVO机制允许一个对象观察一个属性的改变。在你的例子。你可以用KVO来观察你UIImageView图片属性的改变。
打开AlbumView添加下面代码到initWithFrame:albumCover:在 [self addSubview:indicator];后面;
[coverImage addObserver:self forKeyPath:@"image" options:0 context:nil];
这个self是当前的类,作为一个观察coverImage Image属性的观察者。
在本类销毁的时候你还需要注销观察者在AlbumView实现文件里面添加下面的代码:
- (void)dealloc
{
[coverImage removeObserver:self forKeyPath:@"image"];
}
最后添加下面的方法:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"image"])
{
[indicator stopAnimating];
}}
你必须在某个观察者类里面实现这个方法。这个系统执行这个方法每次你观察你的属性改变的时候。上面的代码。当你图片属性改变的时候这个网络提示器就会改变。
编译运行你的应用这个网络提示器消失了。

注意:记得要删除你的观察家们当他们收回,否则你的应用程序会崩溃当系统试图将消息发送到这些不存在的观察者!
如果你在你的应用程序并终止它,你会注意到你的应用程序的状态并没有保存。最后一个相册你看不会应用程序启动时的默认专辑。
为了纠正他你需要用下一个设计模式备忘录设计模式。
IOS设计模式第八篇之键值观察模式的更多相关文章
- 09 (OC)* 键路径(keyPath)、键值编码(KVC)、键值观察(KVO)
键路径在一个给定的实体中,同一个属性的所有值具有相同的数据类型.键-值编码技术用于进行这样的查找—它是一种间接访问对象属性的机制. - 键路径是一个由用点作分隔符的键组成的字符串,用于指定一个连接在一 ...
- 路径(keyPath)、键值编码(KVC)和键值观察(KVO)
键路径 在一个给定的实体中,同一个属性的所有值具有相同的数据类型. 键-值编码技术用于进行这样的查找—它是一种间接访问对象属性的机制. - 键路径是一个由用点作分隔符的键组成的字符串,用于指定一个连接 ...
- IOS UI 第八篇:基本UI
实现图片的滚动,并且自动停止在每张图片上 - (void)viewDidLoad{ [super viewDidLoad]; UIScrollView *scrollView = [[U ...
- IOS设计模式第七篇之观察者设计模式
版权声明:原创作品,谢绝转载!否则将追究法律责任. 观察者设计模式 在观察者设计模式里面,一个对象通知其他的对象一些状态的改变.涉及这些对象不需要知道另一个对象---因此鼓励解耦设计模式.这个设计模式 ...
- iOS - KVO 键值观察
1.KVO KVO 是 Key-Value Observing 的简写,是键值观察的意思,属于 runtime 方法.Key Value Observing 顾名思义就是一种 observer 模式用 ...
- [深入浅出Cocoa]详解键值观察(KVO)及其实现机理
一,前言 Objective-C 中的键(key)-值(value)观察(KVO)并不是什么新鲜事物,它来源于设计模式中的观察者模式,其基本思想就是: 一个目标对象管理所有依赖于它的观察者对象,并在它 ...
- K-V-O 键值观察机制
在两个不同的控制器之间传值是iOS开发中常有的情况,应对这种情况呢,有多种的应对办法.kvc就是其中的一种,所以,我们就在此解释之. key value observing 键值观察,给人一种高 ...
- OC键值观察KVO
什么是KVO? 什么是KVO?KVO是Key-Value Observing的简称,翻译成中文就是键值观察.这是iOS支持的一种机制,用来做什么呢?我们在开发应用时经常需要进行通信,比如一个model ...
- KVO - 键值观察
[基本概念] 键值观察是一种使对象获取其他对象的特定属性变化的通知机制.控制器层的绑定技术就是严重依赖键值观察获得模型层和控制器层的变化通知的.对于不依赖控制器层类的应用程序,键值观察提供了一种简化的 ...
随机推荐
- Spring JDBC SimpleJdbcCall类示例
org.springframework.jdbc.core.SimpleJdbcCall类是表示对存储过程或存储函数的调用的多线程,可重用的对象. 它提供元数据处理以简化访问基本存储过程/函数所需的代 ...
- ELK+Redis 解析Nginx日志
一.ELK简介 Elk是指logstash,elasticsearch,kibana三件套,我们一般使用它们做日志分析. ELK工作原理图: 简单来讲ELK具体的工作流程就是客户端的logstash ...
- Getting Started with Google Guava.pdf
- JUnit 3一个例子就懂
JUnit is a simple framework to write repeatable tests. It is an instance of the xUnit architecture f ...
- 为Hadoop集群选择合适的硬件配置
随着Apache Hadoop的起步,云客户的增多面临的首要问题就是如何为他们新的的Hadoop集群选择合适的硬件. 尽管Hadoop被设计为运行在行业标准的硬件上,提出一个理想的集群配置不想提供硬件 ...
- RMAN:简单的duplicate创建新数据库
duplicate to "test" backup location '/home/oracle/11.2.0.4/assistants/dbca/templates/'; du ...
- libaio.so.1: undefined reference to `__stack_chk_fail@GLIBC_2.4'
没有别的原因: 找正确的 libaio.so.1 包就成. 我这儿有,需要的可以下载奥!
- Windows 下 绿化 Oracle
既然Oracle在非windows平台上可以很“绿色”的执行,那么在windows平台上有无可能呢? 答案是“Yes-No” 基本上,除了监听器(lisentner)这个异类外,Oracle实例完全可 ...
- shell脚本自动清理服务器日志、图片等信息
在做性能测试的时候,linux服务器时常会产生大量数据,如日志信息,图片信息,文件信息等,压测一段时间后,导致服务器磁盘空间暂满而崩溃,每天手动清理比较麻烦, 利用shell脚本自动清理,脚本如下 1 ...
- spring 定时任务corn表达式
* * * * * * * 秒 分 时 日 月 周 年 秒 * / - 0-59 分 * / - 0-59 时 * / - 0-23 * 匹配任意数据 / 每隔多少分钟执行一次 - 区间 案例 0 ...