KVC(Key-Value-Coding)和KVO(Key-Value-Observer)
KVC(Key-Value-Coding)和KVO(Key-Value-Observer)
目录
- 概述
- KVC的基本用法
- KVC的运用
- KVO的基本用法
- KVO的运用
概述
键-值编码是一个用于间接访问对象属性的机制,使用该机制不需要调用存取方法和变量实例就可访问对象属性
键-值编码方法在Objective-C非正式协议(类目)NSKeyValueCoding中被声明,默认的实现方法由NSObject提供
键-值编码支持带有对象值的属性,同时也支持纯数值类型和结构。非对象参数和返回类型会被识别并自动封装/解封
KVC的基本用法
设置和访问
-valueForKey和-setValue:forKey:
注:是否存在setter、getter方法,如果不存在,它将在内部查找名为_key或key的实例变量
路径访问
-valueForKeyPath:和-setValue:forKeyPath:
注:用于访问对象里面的对象的属性
KVC的简单运算
了解
KVC的运用
KVO的基本用法
注册观察者
addObserver:forKeyPath:options:context:
观察者响应事件
observeValueForKeyPath:ofObject:change:context
移除观察者
removeObserver:forKeyPath:
示例
护士监听儿童,注册观察者和响应事件都放在了护士类里面
[child addObserver:self forKeyPath:@"tired" options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew context:nil];
KVO的运用
转载于:https://www.cnblogs.com/IOS-Developer/p/4291298.html
KVC(Key-Value-Coding)和KVO(Key-Value-Observer)相关推荐
- 为什么用dict.get(key)而不是dict [key]?
本文翻译自:Why dict.get(key) instead of dict[key]? Today, I came across the dict method get which, given ...
- Redis 笔记(02)— keys 键相关命令(查询数据库key数量、判断key是否存在、指定key过期时间、查看key类型、查看key剩余秒数、选择数据库、删除key、删除数据库)
1. keys 键相关命令 命令 说明 dbsize 返回当前数据路的key数量 exists key 测试指定key是否存在 expire key seconds 为key指定过期时间 type k ...
- this class is not key value coding-compliant for the key ##
setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key ## 出现以上错误时很恶心,并 ...
- php redis删除所有key,redis中批量删除key的方法
Redis是一个高性能的key-value数据库.redis中可以借助Linux的xargs指令来批量删除key,也可以使用flushdb和flushall命令删除所有key. 批量删除Key Red ...
- Specified key was too long; max key length is 1000 bytes问题解决
今天使用帆软的报表平台管理,进行外接数据库配置,尝试多次一直提示数据导入失败 java的报错 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExcep ...
- apt-get出现no public key available for the following key IDs
今天在升级一台debian的时候,因为换了163的源.另外一台好好的.但是这台出错了 出现 Reading package lists... Done W: There is no public ke ...
- hive的Specified key was too long; max key length is 767 bytes问题解决
把hive 的metadata配置成mysql,执行命令时报以下错误 hive> show tables; FAILED: Error in metadata: MetaException(me ...
- Key usage extensions and extended key usage
转载自IBM的一篇文章 http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp?topic=%2Fcom.ibm.help.do ...
- hive 1.1.1 Specified key was too long; max key length is 767 bytes
错误 hive> create table shop(locationid int,name string,cnname string) row format delimited fields ...
- MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
Hive 0.13和HBase 0.98.6.1整合出现错误记录下 hive> CREATE TABLE hbase_table_1(key int, value string) > ST ...
最新文章
- HNOI2019游记
- JAVA判断各种类型数据是否为空(亲测)
- layui前端框架弹出框图标整理
- 【LeetCode笔记】322. 零钱兑换(Java、动态规划)
- php cii订单导出,使用 kingcms.php 建立一个留言本【附模型代码】
- 毕设日志——特征融合修改vgg16.py
- Gnumeric,专业处理数字软件
- fgets和fgetl有什么区别
- 虚拟专用网络安全技术
- “蔚来杯“2022牛客暑期多校训练营5 Don‘t Starve
- Python免费的验证码识别
- 京东深圳手Q微信事业部测试工程师面试总结
- Velodyne VLP16 激光雷达测试
- 2022年你应该知道的十大Python库
- (附源码)springboot实验室预约管理系统的开发毕业设计261141
- stm32f103 时钟系统
- 微生物组-宏基因组分析(线上/线下同时开课,2021.11)
- Nginx教程 安装
- Plist文件是什么?
- micropython教程nucleo-f767zi开发板_NUCLEO-F767ZI开发板评测
热门文章
- 【ES11(2020)】Promise 扩展 allSettled()
- 计算机应用基础教程2015答案,《计算机应用基础教程(2015版)》_课后题答案.doc
- anaconda base环境_Mac系统下借助Anaconda为jupyter notebook添加多个python内核及相关操作...
- C++设计模式-中介者模式
- Qt OpenGL 图像的平移(使用glTranslatef)
- java的tcp实时接收json格式报文_tcp - 如何使用带有rsocket Java的TcpClientTransport将自定义数据格式转换为JSON - 堆栈内存溢出...
- 定义python函数时如果没有return_定义 Python 函数时,如果函数中没有 return 语句,则默认返回空值 None 。_学小易找答案...
- powershell目录带空格_powershell - 如何在命令行的路径中运行带有空格的powershell脚本? - SO中文参考 - www.soinside.com...
- 《计算机应用基础》模拟试卷三,2015年《计算机应用基础》模拟试题及答案(一)...
- 市面上有哪几种门_目前市面上木门的几种分类