博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS中有两种支持机制:Notification和KVO(Key-Value Observing)
阅读量:7024 次
发布时间:2019-06-28

本文共 933 字,大约阅读时间需要 3 分钟。

KVO是iOS中的一个核心概念,简单理解就是:关注Model某个数据(Key)的对象可以注册为监听器,一旦Model某个Key的Value发生变化,就会广播给所有的监听器()

KVO:KVO是一个怎么样的Cocoa机制?

答:Kvo(Key Value Coding)是cocoa中用来设值或取值的协议(NSKeyValueCoding),跟java的ejb有点类似。都是通过对变量和函数名进行规范达到方便设置类成员值的目的.它是Cocoa的一个重要机制,它有点类似于Notification,但是,它提供了观察某一属性变化的方法,而Notification需要一个发送notification的对象,这样KVO就比Notification极大的简化了代码。这种观察-被观察模型适用于这样的情况,比方说根据A(数据类)的某个属性值变化,B(view类)中的某个属性做出相应变化。对于推崇MVC的cocoa而言,kvo应用价值很高。

kvo的使用方法:

1、注册: -(void)addObserver:(NSObject *)anObserver forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context keyPath就是要观察的属性值,options给你观察键值变化的选择,而context方便传输你需要的数据(注意这是一个void型)

2、实现变化方法:

-(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context change里存储了一些变化的数据,比如变化前的数据,变化后的数据;如果注册时context不为空,这里context就能接收到。是不是很简单?kvo的逻辑非常清晰,实现步骤简单

转载于:https://www.cnblogs.com/Rampage/archive/2012/02/10/2345530.html

你可能感兴趣的文章
围棋十诀
查看>>
Android 实现ListView不可滚动效果
查看>>
[转载]基于TFS实践敏捷-修复Bug和执行代码评审
查看>>
VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法
查看>>
HDU 5626 Clarke and points 平面两点曼哈顿最远距离
查看>>
【线性代数】图与网络
查看>>
httpUrlConnection的參数具体解释
查看>>
落地数据和不落地数据
查看>>
CSS布局:水平居中
查看>>
QQ聊天原理初识
查看>>
【Spring五】AOP之使用注解配置
查看>>
Windbg(2)
查看>>
make 和 makefile 的关系
查看>>
【HTTP】WireShark中获取Content-Encoding: gzip时的响应内容
查看>>
Ural 2045. Richness of words 打表找规律
查看>>
李洪强iOS开发本人集成环信的经验总结_01环信SDK的导入
查看>>
VisualStudio快捷键
查看>>
编写Chrome扩展程序
查看>>
RabbitMQ学习笔记4-使用fanout交换器
查看>>
一些组织和个人网站
查看>>