手动设定实例变量的KVO实现监听
2023-09-14 08:57:17 时间
手动设定实例变量的KVO实现监听
如果将一个对象设定成属性,这个属性是自动支持KVO的,如果这个对象是一个实例变量,那么,这个KVO是需要我们自己来实现的.
以下给出源码供君测试:
Student.h 与 Student.m
// // Student.h // SuperNotification // Copyright (c) 2014年 Y.X. All rights reserved. #import Foundation/Foundation.h @interface Student : NSObject NSString *_age; - (void)setAge:(NSString *)age; - (NSString *)age; @property (nonatomic, strong) NSString *name; @end
// // Student.m // SuperNotification // Copyright (c) 2014年 Y.X. All rights reserved. #import "Student.h" @implementation Student @synthesize name = _name; - (void)setName:(NSString *)name _name = name; - (NSString *)name return _name;
forKeyPath:@"name" // 属性 options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil]; // 监听实例变量age [_student addObserver:self forKeyPath:@"age" // 实例变量 options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil]; _student.name = @"YouXianMing"; // 改变名字 _student.age = @"18"; // 改变年龄 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context NSLog(@"%@", change); @end
这个是手动实现KVO需要注意的地方:
访问对象的属性,你知道有哪些方法? 相信对象对于每个使用JavaScript的人来说都不陌生。访问对象的属性几乎日常开发每天都在用。下面我们一起探索下有哪些方式可以实现属性的访问。
iOS开发--通知,代理,KVO的区别,以及通知的多线程问题 1. delegate 当我们第一次编写ios应用时,我们注意到不断的在使用“delegate”,并且贯穿于整个SDK。delegation模式不是IOS特有的模式,而是依赖与你过去拥有的编程背景。针对它的优势以及为什么经常使用到,这种模式可能不是很明显的。
KVO解析(一) —— 基本了解KVO解析(二) —— 一个简单的KVO实现KVO解析(三) —— KVO合规性KVO解析(四) —— Faults and KVO Notifications
相关文章
- Silverlight实用窍门系列:35.细解Silverlight冒泡路由事件和注册冒泡路由事件【附带实例源码】
- ES聚合查询实例
- 【PHP面向对象(OOP)编程入门教程】5.如何实例化对象?
- Java I/O学习(附实例和详解)
- 实例!使用Idea创建SSM框架的Maven项目
- java 获取数组(二维数组)长度实例程序
- 实例讲解-单向列表的实现(1)
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- Static变量和实例变量的初始化顺序问题
- 微服务实现事务一致性实例
- Python命令行参数解析模块getopt使用实例
- sql语句实现行转列的3种方法实例
- 静态变量和实例变量的区别
- iOS(swift)计算属性(Computed Properties)使用实例
- pytorch生成网络WGAN-GP实例
- 实例分析Scheduled Thread Pool Executor与Timer的区别
- CSS3 3D旋转动画代码实例
- python 私有和保护成员变量如何实现?—— "单下划线 " 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量;" 双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据
- 内部类和外部类的实例变量可以共存
- 2021爱智先行者—(2)零基础APP开发实例
- 第二周 深度卷积网络:实例探究(Deep convolutional models: case studies)