KVC

KVC和KVO底层原理 了解更多iOS底层原理知识,关注腾讯课堂八点钟学院iOS高级开发 iOS学习交流QQ群431449751KVC和KVO想必都熟知的一个名词,采用观察者模式,那么KVC到底是个什么,KVO又是什么,它们之间是怎样关联的,一起来解决这些疑惑。像我们银行卡bankCard的余额变动,会及时通知给用户,这种场景就运用了观察者模式,达到了系统的高效高性能处理;当你了解KVC机制,会恍然大悟,只要知道一个UI 阅读详情

01基本使用

通过KVC修改属性会触发KVO么?
会触发KVO
KVC的赋值和取值过程是怎样的?原理是什么?

KVC的全称是Key-Value Coding,俗称“键值编码”,可以通过一个key来访问某个属性
常见的API有

- (void)setValue:(id)value forKeyPath:(NSString *)keyPath;
    - (void)setValue:(id)value forKey:(NSString *)key;
    - (id)valueForKeyPath:(NSString *)keyPath;
    - (id)valueForKey:(NSString *)key;

forKeyPath和forKey的区别就是一个利用.连接路径运算而key只可以用一层,当前对象的属性

KVC的基本使用

02设值的原理

他就根据你传进来的key来询找方法

setValueForKey

即使没有声明属性和成员变量,也回去寻找方法去调用,如果经过所有过程也没有发现这个方法的话,就会报错NSUnknownKeyException,

[p1 setValue:@14 forKey:@"age"];

@implementation Person
-(void)setAge:(int)age
{
   NSLog(@"KVC调用%i", age);

}
@end

KVC就算是直接找到成员变量进行修改也是会触发KVO这可能是因为,KVC内部做了处理,他会手动出发KVO,调用了willChangeValueForKey和didChangeValueForKey

03KVC取值原理

截屏2020-10-21 下午1.43.54.png
iOS之深入解析KVC的底层原理和自定义KVC的实现 一、KVC 简介 ① 定义 KVC 是 Key-Value Coding 的简称,中文译义为键值编码。 KVC 是指 iOS 的开发中,可以允许开发者通过 Key 名直接访问对象的属性,或者给对象的属性赋值,而不需要调用明确的存取方法。 KVC 是由 NSKeyValueCoding 非正式协议启用的一种机制,对象采用该协议来间接访问其属性,即可以通过一个字符串 key 来访问某个属性。这种间接访问机制补充了实例变量及其相关的访问器方法所提供的直接访问。 通过 KVC 就可以在运行时动态地访问和修改对象的 阅读详情

相关推荐

ISO26262 功能安全各个阶段测试要求

1. 开发过程说明 系统层面:包括软硬件集成测试、系统集成测试以及整车测试。 硬件层面:包括硬件集成与测试。 软件层面:单元测试、集成测试。 2. 功能安全总体要求 2.1 各项指标 2.2 诊断覆盖度举例 针对一个信号举例说明: 3. 功能安全测试要求 3.1 测试计划 核心内容应包括, 测试对象:需要测试的对象描述,以及测试的范围描...

AgingMoon的博客 1万+

kvc是什么

1)kvo是KeyValue Coding的简称,键值编码。它是一种可以直接通过字符串的名字(key)来访问类属性的机制。而不是通过getter,setter方法访问。 2)获取值: valueForKey:传入nsstring属性的名字 valueForKeyPath:传入NSString属性的路径,xx.xx形式。 valueForUndefinedKey它的默认实现是抛出异常。可以重

u011508406的专栏 9709

通达信大单资金实时监控与播报插件:股票分析的实用利器——大红球

本文介绍了一款专为通达信软件设计的大单资金实时监控与播报插件,该插件以其傻瓜式操作和入门级特性在股民中广受欢迎。插件核心功能包括与通达信版面的无缝联动、大单金额范围的自定义设置、资金流动的可视化展示以及智能声音播报等。其技术架构基于本地网页形式,自带分时图显示功能,数据实时更新且无需L2账户,承诺永久免费升级。插件通过红绿球的大小和颜色直观展示资金规模与买卖方向,顶端全局统计功能提供宏观资金流动分析。尽管插件数据具有较高参考价值,但投资者仍需结合其他因素进行综合判断。插件界面可自适应调整,提供个性化使用体验

guleba的博客 6584

【iOS】KVC总结

的全称是Key-Value Coding(键值编码),是由NSKeyValueCoding非正式协议启用的一种机制,对象采用这种机制来提供对其属性的间接访问,可以通过字符串来访问一个对象的成员变量或其关联的存取方法(getter or setter)。通常,我们可以直接通过存取方法或变量名来访问对象的属性。我们也可以使用KVC间接访问对象的属性,并且KVC还可以访问私有变量。某些情况下,KVC还可以帮助简化代码。KVC是许多其他 Cocoa 技术的基础概念,比如等等。

2402_86720949的博客 1097

告别Keil4!手把手教你用Keil C51 V9.61编译51单片机代码(附最新激活方法)

本文详细介绍了Keil C51 V9.61在51单片机开发中的全栈升级指南,包括编译速度提升、调试器性能优化和现代开发支持等核心优势。通过智能安装方案、项目迁移实战和新特性深度应用,帮助开发者告别Keil4,大幅提升开发效率。附有最新激活方法和实用技巧,适用于嵌入式开发工程师。

weixin_26886855的博客 419

4. PCIe 接口时序

在上一篇中,大致介绍IPcore接口。总的来说接口如下图数据的接收和发送通过transmitTLPinterface和ReceiveTLPinterface。收发数据的时序也只是描述这几个接口的关系。从手册上截取PCIex1的接口时序。

jjinl的专栏 6118

【iOS】KVC原理及自定义

本文深入探讨了iOS开发中的KVC(Key-Value Coding)机制。首先介绍了KVC的定义和基本API,包括setValue:forKey:/valueForKey:等核心方法。详细分析了KVC的底层实现原理:设值过程遵循set<Key>、set<Key>、<key>、_is<Key>的顺序查找;取值过程则按get<Key>、<key>、is<Key>等顺序查找。文章还提供了自定义KVC的实现方案......

2301_80095702的博客 837

记一次完整的RPG Maker MV游戏逆向过程(思路一)

了解RPG Maker MV的文件建构 上一篇文章,我们已经成功在PC上运行了游戏,那我们如何对游戏进行逆向呢? 首先要了解正常的RPG Maker MV制作的游戏应该具有哪些文件,以及他的结构 那如何了解他的结构呢,很简单,我们只需要用RPG Maker MV创建一个默认工程,来看看一个游戏的最简结构是怎么样的 创建新项目 项目创建完成 查看项目目录结构 是不是和之前解包出来的很像呢? 通...

Ciiiiiing的博客 1万+

「iOS」——KVC

iOS KVC(键值编码)是一种通过字符串键名间接访问对象属性的机制,提供动态读写能力。其核心方法包括valueForKey:、setValue:forKey:以及键路径操作API。设值原理依次查找setter方法(set<Key>、set<Key>等),若无则检查实例变量(<key>、<key>等);取值原理先查找getter方法,再尝试集合代理转换,最后搜索实例变量。KVC还支持值验证、异常处理等扩展功能。

2301_80253909的博客 1016

怎么选?一文读懂12种SPC控制图,从基础到进阶,再到Python代码实现

本文系统介绍了12种常用SPC控制图的应用场景和特点,包括计量型(Xbar-R图、Xbar-s图、I-MR图等)、计数型(P图、NP图、U图等)及进阶控制图(EWMA图、CUSUM图、多元控制图)。文章强调控制图是SPC的核心工具,能有效区分过程变异类型,实现"预防优于检测"的质量管理目标。通过数据示例和Python代码展示了各类控制图的实现方法,为质量管理人员提供了实用参考。

m0_56592100的博客 4115

地平线旭日X3派(RDK X3)从开箱到联网:新手避坑指南

本文为地平线旭日X3派(RDK X3)新手提供从开箱到联网的完整避坑指南。详细讲解了硬件识别、系统镜像烧录、串口调试(波特率921600)、有线/无线网络配置以及SSH/VNC远程访问等关键步骤,帮助开发者快速搭建稳定的开发环境,为后续AI应用部署扫清障碍。

weixin_29174385的博客 929

【iOS开发】—— KVC

KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值。而不需要调用明确的存取方法。这样就可以在运行时动态地访问和修改对象的属性。而不是在编译时确定,这也是iOS开发中的黑魔法之一。很多高级的iOS开发技巧都是基于KVC实现的。

qq_72437394的博客 1208

基于Jeecgboot3.8.1的vue3版本前后端分离的flowable流程管理平台

基于Jeecgboot3.8.1的vue3版本前后端分离的flowable流程管理平台

宁波阿成的博客 1542

KVC原理分析及应用

开始

Mr_yu__的博客 3595

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

探索iOS中的KVC

这篇文章主要是介绍KVC的用法。KVC是一种间接访问对象属性的方法。通常,我们通过属性的getter和setter方法来访问或修改对象的属性。但使用KVC,我们可以通过字符串键来访问这些属性,这使得代码更加灵活和动态。

我叫柱子哥 1393

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

KVO/KVC系列之一——什么是KVC

在iOS开发过程中,我们经常会听到或者用到KVO/KVC,但是对于什么是KVO和KVC,我们可能没有那么了解。下面先让我们来了解一下什么是KVC. 在苹果的官方文档中是这样描述KVC的:它是一种通过字符串描述符而不是通过调用访问方法或者直接使用实例变量的非直接的访问对象属性的机制,

somus的专栏 2650

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

KVO & KVC

KVC&&KVO在swift中用法

yueliangmua的博客 1122

[iOS] KVC 学习

本篇博客主要介绍 KVC 的相关内容。KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值。而不需要调用明确的存取方法。这样就可以在运行时动态在访问和修改对象的属性。而不是在编译时确定,这也是iOS开发中的黑魔法之一。KVC 的定义是通过 NSObject 的拓展来实现的,下面是关于 KVC 的四个重要方法//直接通过属性名来取值//通过属性名来设值。

2501_91494333的博客 992

【iOS】KVC

KVC全称,中文名称为键码编值,可以通过一个key来访问某一个属性。

2301_79847748的博客 1590

【iOS】—— KVC与KVO

KVC的全称是,俗称“键值编码”,可以通过一个key来访问某个属性;KVC提供了一种间接访问其属性方法或成员变量的机制,可以通过字符串来访问对应的属性方法或成员变量;它是一个非正式的Protocol,提供一种机制来间接访问对象的属性,而不是通过调用Setter、Getter方法访问。KVO 就是基于 KVC 实现的关键技术之一。KVO的全称是,俗称“键值监听",可以用于监听某个对象属性值的改变;KVO是苹果提供的在套事件通知机制。KVO和都是iOS中观察者模式的一种实现,区别。...

m0_55124878的博客 1986

KVC简单理解

聊一下KVC和KVO 一.KVC介绍 1.KVC到底是个啥? KVC(NSKeyValueCoding)是一种非正式协议,Key-Value coding是一种机制间接访问对象的属性,使用字符串识别属性,而不是通过调用一个访问器方法或直接访问实 例变量。 2.KVC原理 Key就是一个字符串来表示特定属性,通常对应一个访问器方法或者接收对象的实例变量。Key必须使用ASCII编码,以小

菜菜的 4135

【iOS】KVC &KVO 总结

KVO的全称是: 键值监听,可以用于监听某个对象属性值的改变;KVO时苹果提供的一套事件通知机制,KVO和都是iOS观察者模式的实现。区别:可以存在一对多,而KVO则是 一对一的 关系。利用RuntimeAPI动态生成一个子类,并且让instance对象的isa指向这个全新的子类当修改instance对象的属性时,会调用Foundation的函数接着调用父类原来的setter方法修改属性的值。最后调用,其内部会触发监听器(Oberser)的监听方法调用调用的时候,会。

weixin_61639290的博客 2222

KVC\KVO介绍

转载自:http://blog.youkuaiyun.com/zhaozy55555/article/details/8598374 仅供自我学习,感谢楼主。 一.KVC和KVO的概念 1> KVC:NSKeyValueCoding的简称,是一种可以直接通过字符串的名字(key)来访问类属性的机制,而不是通过调用的Setter、Getter方法访问。 2>

guicl0219的专栏 5394

iOS 再谈KVC、 KVO

参考链接: https://www.jianshu.com/p/badf5cac0130

ws1836300的博客 1167

iOS KVC详解

转载地址:https://www.jianshu.com/p/b9f020a8b4c9 KVC KVC定义 KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值。而不需要调用明确的存取方法。这样就可以在运行时动态地访问和修改对象的属性。而不是在编译时确定,这也是iOS开发中的黑魔法之一。很多高级的iOS开发技巧...

1613
上一篇: Block
下一篇: Runtime-objc_msgSend
I微微一笑I
博客等级 码龄11年 0粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值