博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS之KVO
阅读量:5970 次
发布时间:2019-06-19

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

先创建一个person类并定义name和sex属性,当person的name或sex属性发生变化时会执行一个action /**     *  KVO --- Key Value Observe(键值观察者)     *  KVO 是一种设计模式,属于观察者设计模式     *  观察者设计模式涉及到以下内容:观察者、被观察者、观察的事项     *  工作原理:观察者 观察 被观察者 指定的属性是否发生变化,一旦发生变化,就执行一个action     *  KVO 是基于 KVC 的,通过keyPath指定需要观察的属性     */        _person = [[Person alloc] init];    // 控制器观察model的变化        // self作为观察者 观察person的name属性的变化    [_person addObserver:self forKeyPath:@"name" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:Nil];    _person.name = @"zhangsan";    [_person setValue:@"lisi" forKey:@"name"];        [_person addObserver:self forKeyPath:@"sex" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:Nil];    _person.sex = @"nan";        /**     *  总结KVO的四个步骤     * 1 [被观察者 addObserver:观察者 forKeyPath:被观察的属性 options:观察设置 context:参数]     * 2 观察者实现 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context     * 3 被观察者属性发生变化     * 4 移除观察者     */

  当person的被观察属性发生变化时会执行下面的方法

/** *  当被观察者被观察的属性发生变化时 执行此方法 * *  @param keyPath 被观察的属性 *  @param object  被观察者 *  @param change  变化 *  @param context ?????????? 还不理解 */- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{    NSLog(@"\nkeyPaht%@ \nobject%@ \nchange%@ \ncontext%@", keyPath, object, change, context);}

  

转载于:https://www.cnblogs.com/NatureZhang/p/3718154.html

你可能感兴趣的文章
首届中国IT架构大师高峰论坛(十年架构之路汇成一句话!)
查看>>
【Windows编程】系列第三篇:文本字符输出
查看>>
shell脚本逻辑判断,文件目录属性判断,if,case用法
查看>>
教程:一起学习Hystrix--服务(依赖)失败场景的表象
查看>>
华为链路汇聚命令(静态)
查看>>
2018年UI设计师的工资待遇怎么样?高实在是高啊
查看>>
MongoDB导出场景查询优化 #1
查看>>
Linux进阶:DNS详解
查看>>
ajaxSetup
查看>>
什么心态阻碍了你职业的发展
查看>>
亚马逊给警察局装备了人脸识别系统就万事大吉了?没那么容易
查看>>
Python手绘图了解一下!
查看>>
wxPython和PyQt谁才是最赞的Python GUI库?
查看>>
简单工厂模式--加减乘除运算
查看>>
智能语音机器人市场对手如此多,微服网络如何更胜一筹
查看>>
linux下设置代理
查看>>
outlook自定义邮件提示声音以及设置接收邮件的间隔时间
查看>>
值传递、指针传递、引用传递的区别
查看>>
facebook 分享,遇到的错误
查看>>
svn 部署问题总结
查看>>