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)相关推荐

  1. 为什么用dict.get(key)而不是dict [key]?

    本文翻译自:Why dict.get(key) instead of dict[key]? Today, I came across the dict method get which, given ...

  2. Redis 笔记(02)— keys 键相关命令(查询数据库key数量、判断key是否存在、指定key过期时间、查看key类型、查看key剩余秒数、选择数据库、删除key、删除数据库)

    1. keys 键相关命令 命令 说明 dbsize 返回当前数据路的key数量 exists key 测试指定key是否存在 expire key seconds 为key指定过期时间 type k ...

  3. this class is not key value coding-compliant for the key ##

    setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key ## 出现以上错误时很恶心,并 ...

  4. php redis删除所有key,redis中批量删除key的方法

    Redis是一个高性能的key-value数据库.redis中可以借助Linux的xargs指令来批量删除key,也可以使用flushdb和flushall命令删除所有key. 批量删除Key Red ...

  5. Specified key was too long; max key length is 1000 bytes问题解决

    今天使用帆软的报表平台管理,进行外接数据库配置,尝试多次一直提示数据导入失败 java的报错 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExcep ...

  6. apt-get出现no public key available for the following key IDs

    今天在升级一台debian的时候,因为换了163的源.另外一台好好的.但是这台出错了 出现 Reading package lists... Done W: There is no public ke ...

  7. hive的Specified key was too long; max key length is 767 bytes问题解决

    把hive 的metadata配置成mysql,执行命令时报以下错误 hive> show tables; FAILED: Error in metadata: MetaException(me ...

  8. Key usage extensions and extended key usage

    转载自IBM的一篇文章 http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp?topic=%2Fcom.ibm.help.do ...

  9. 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 ...

  10. 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 ...

最新文章

  1. HNOI2019游记
  2. JAVA判断各种类型数据是否为空(亲测)
  3. layui前端框架弹出框图标整理
  4. 【LeetCode笔记】322. 零钱兑换(Java、动态规划)
  5. php cii订单导出,使用 kingcms.php 建立一个留言本【附模型代码】
  6. 毕设日志——特征融合修改vgg16.py
  7. Gnumeric,专业处理数字软件
  8. fgets和fgetl有什么区别
  9. 虚拟专用网络安全技术
  10. “蔚来杯“2022牛客暑期多校训练营5 Don‘t Starve
  11. Python免费的验证码识别
  12. 京东深圳手Q微信事业部测试工程师面试总结
  13. Velodyne VLP16 激光雷达测试
  14. 2022年你应该知道的十大Python库
  15. (附源码)springboot实验室预约管理系统的开发毕业设计261141
  16. stm32f103 时钟系统
  17. 微生物组-宏基因组分析(线上/线下同时开课,2021.11)
  18. Nginx教程 安装
  19. Plist文件是什么?
  20. micropython教程nucleo-f767zi开发板_NUCLEO-F767ZI开发板评测

热门文章

  1. 【ES11(2020)】Promise 扩展 allSettled()
  2. 计算机应用基础教程2015答案,《计算机应用基础教程(2015版)》_课后题答案.doc
  3. anaconda base环境_Mac系统下借助Anaconda为jupyter notebook添加多个python内核及相关操作...
  4. C++设计模式-中介者模式
  5. Qt OpenGL 图像的平移(使用glTranslatef)
  6. java的tcp实时接收json格式报文_tcp - 如何使用带有rsocket Java的TcpClientTransport将自定义数据格式转换为JSON - 堆栈内存溢出...
  7. 定义python函数时如果没有return_定义 Python 函数时,如果函数中没有 return 语句,则默认返回空值 None 。_学小易找答案...
  8. powershell目录带空格_powershell - 如何在命令行的路径中运行带有空格的powershell脚本? - SO中文参考 - www.soinside.com...
  9. 《计算机应用基础》模拟试卷三,2015年《计算机应用基础》模拟试题及答案(一)...
  10. 市面上有哪几种门_目前市面上木门的几种分类