ios27--kvo
2024-09-05 01:55:20
//
// ViewController.h
// 14-KVO的使用 #import <UIKit/UIKit.h> @interface ViewController : UIViewController @end
//
// ViewController.m
// 14-KVO的使用
//
/*
KVO: Key Value Observing (键值监听)--->当某个对象的属性值发生改变的时候(用KVO监听)
*/ #import "ViewController.h"
#import "XMGPerson.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; XMGPerson *person = [[XMGPerson alloc] init];
person.name = @"zs"; XMGPerson *person1 = [[XMGPerson alloc] init];
person.name = @"zs";
/*
作用:给对象绑定一个监听器(观察者)
- Observer 观察者
- KeyPath 要监听的属性
- options 选项(方法方法中拿到属性值,拿到新值和旧值)
*/
[person addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil]; person.name = @"ls"; person1.name = @"ls"; person.name = @"ww"; // 移除监听
[person removeObserver:self forKeyPath:@"name"];//移除哪个对象的哪个属性的监听
} /**
* 当监听的属性值发生改变
*
* @param keyPath 要改变的属性
* @param object 要改变的属性所属的对象
* @param change 改变的内容
* @param context 上下文
*/
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{
NSLog(@"%@------%@------%@------%@", keyPath, object, change,context);
/*
name------<XMGPerson: 0x6080000102d0>------{kind = 1;new = ls;old = zs;}------(null)
*/
} @end
//
// XMGPerson.h
// 14-KVO的使用 #import <Foundation/Foundation.h> @interface XMGPerson : NSObject /** 姓名 */
@property (nonatomic, copy) NSString *name; //string用copy @end
//
// XMGPerson.m
// 14-KVO的使用 #import "XMGPerson.h" @implementation XMGPerson @end
最新文章
- hdu 1811Rank of Tetris (并查集 + 拓扑排序)
- Cocos2d-x 3.2 学习笔记(五)Sprite Node
- HDU5670Machine(抽象进制)
- 安装SQL Server 2012 『企业中文版』
- U3D自定义Inspector项未触发保存事件的解决方案
- Package &#39;DXCore for Visual Studio&#39; has failed to load properly
- 使用 Swift 制作一个新闻通知中心插件(2)
- POJ 1005 解题报告
- Test Bench基础知识笔记
- bzoj 1066 : [SCOI2007]蜥蜴 网络流
- 必须掌握的八个cmd命令
- 判断json是否包含了每个键 PHP
- C++中构造函数,拷贝构造函数和赋值函数的区别和实现
- 设计模式之模版方法模式(Template Method Pattern)
- MySQL(存储过程,支持事务操作)
- 结对作业——随机生成四则运算(Core 第7组)
- OpenStack安装部署(二)
- Edge/Chrome/火狐/Safari/Opera和IE
- loadrunner--步长(Pacing)的设置及作用
- DevExpress.XtraGrid
热门文章
- 题解 P1967 货车运输
- 【Html,Css,JavaScript】初学总结
- Angular网络请求的封装
- [bzoj3531][Sdoi2014][旅行] (主席树+树链剖分)
- MSP430F5529时钟系统深究
- 动态创建div(鼠标放上显示二维码)
- MySQL最优配置文件模板&#183;2016-11-28
- 592. Fraction Addition and Subtraction
- TYVJ1716 上帝造题的七分钟
- Eclipse使用Maven时,修改默认中央仓库后的配置报错找不到包的问题解决