KVC探索

作者: 火柴盒环游记 | 来源:发表于2020-04-13 17:18 被阅读0次
  • KVC

    • 动态取值和设值
    • 访问和改变私有变量
    • 修改控件的内部属性

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

/*
 默认返回YES,表示如果没有找到Set<Key>方法的话,会按照_key,_iskey,
key,iskey的顺序搜索成员,设置成NO就不这样搜索
 */
+ (BOOL)accessInstanceVariablesDirectly;

'setNilValueForKey'
通过kvc赋值的时候,给一个基本数据类型比如int float设置一个nil值,就会调
用这个方法
赋值操作:
1、首先访问该实例类对象的方法列表,按照setKey、_setKey、setIsKey的顺序进行查找访问
2、如果找不到简单的访问器,并且类方法accessInstanceVariablesDirectly
返回YES,则按'_key'、'_isKey'、'key'或'isKey'
顺序来查找类对象中的成员属性列表中的实例变量。如果找到,直接用输入值(或未包
装值)设置变量并完成,没有找到则抛出异常NSUnknownKeyException或者调用setValue:forUndefinedKey
3、accessInstanceVariablesDirectly 是判断关闭或开启实例变量赋值,只有
返回YES,它才能够访问实例变量
取值操作:
1、首先访问该实例类对象的方法列表,按照getKey、key、isKey、_key的顺序进行查找访问
2、如果找不到简单的访问器,并且类方法accessInstanceVariablesDirectly
返回YES,则按'_key'、'_isKey'、'key'或'isKey'
顺序来查找类对象中的成员属性列表中的实例变量。如果找到,直接取值,没有找到则抛出异常NSUnknownKeyException或者调用valueForUndefinedKey
  • 拓展

  • setValue forKeysetObject:(ObjectType)anObject forKey:(KeyType <NSCopying>)aKey
'setValue forKey'
1、KVC编码方法,方法是在NSObject对象中创建的,也就是说所有的oc对象都有这个方法,所以可以用于任何类
2、value可为nil,如果为nil,则自动调用removeObject forkey
3、key必须为NSString
4、取值的时候valueforkey的key如果包含@符号,则取值时会自动把@去掉,程序crash

'setObject:(ObjectType)anObject forKey:(KeyType <NSCopying>)aKey'
1、方法属于NSMutabledictionary
2、value不可以为nil,如果为nil,则引发crash;但value可以为[NSNull null],[NSNull null]为一个空对象,并不是nil;
3、key的对象是一个id类型,并不是NSString,只不过我们经常使用NSString而已。
4、取值的时候objectforkey的key如果包含@符号,无影响,可以正常取出该值

相关文章

  • GNUstep KVC/KVO探索(二):KVO的内部实现

    GNUstep KVC/KVO探索(一):KVC的内部实现GNUstep KVC/KVO探索(二):KVO的内部实...

  • GNUstep KVC/KVO探索(一):KVC的内部实现

    GNUstep KVC/KVO探索(一):KVC的内部实现GNUstep KVC/KVO探索(二):KVO的内部实...

  • KVC探索

    KVC动态取值和设值访问和改变私有变量修改控件的内部属性 KVC(Key-value coding)键值编码,就是...

  • iOS KVC探索

    成员变量、实例变量、属性 成员变量:不会自动生成get、set方法,成员变量不能用点语法调用,因为没有set和ge...

  • KVC的执行流程

    在这篇文章中,我们将探索KVC的执行流程,首先我们可以从官方文档中找到该流程Apple Document KVC[...

  • 探索KVC和KVO的本质

    原文链接: 探索KVC和KVO的本质 这篇文章主要介绍KVO和KVC, 机器底层是如何实现的 KVO的全称是Key...

  • 03--KVC/KVO本质02--KVC 取值&赋值过程

    [TOC] 本章主要探索 KVC 的取值和赋值过程探索过程来源于官方文档:About Key-Value Codi...

  • iOS KVC本质探索

    上篇文章讲完了KVO这篇来看看KVC,KVC在开发中的使用也算是挺多的,下面从几个方面来看看KVC 常见的API用...

  • KVC 底层原理探索

    定义 KVC的全称是Key-Value Coding,翻译成中文是 键值编码,键值编码是由NSKeyValueCo...

  • # iOS底层探索 -- KVC篇

    KVC是我们在开发过程中经常会用到的东西,但是很多时候,只是使用,不求甚解。那么我们今天来探索一下 -- KVC ...

网友评论

      本文标题:KVC探索

      本文链接:https://www.haomeiwen.com/subject/smsnmhtx.html