美文网首页
KVC相关知识(笔记)

KVC相关知识(笔记)

作者: 我家冰箱养企鹅 | 来源:发表于2022-04-13 17:39 被阅读0次

kvc可以通过key来访问对象的某个属性,它常见的方法有:

- (nullable id)valueForKey:(NSString *)key;        //直接通过Key来取值
- (void)setValue:(nullable id)value forKey:(NSString *)key; //通过Key来设值
- (nullable id)valueForKeyPath:(NSString *)keyPath;     //通过KeyPath来取值
- (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath;  //通过KeyPath来设值

key和keyPath的区别是:如果想要访问的是对象内的其他对象属性的成员,则需要通过keyPath来访问,即

MYObject *m1 = [MYObject new];
[m1 setValue:@10 forKey:@"v1"];//v1是int属性
[m1 setValue:@5 forKeyPath:@"obj.s1"];//obj是对象属性

setValue的执行顺序是:

  1. 按照setKey,_setKey的顺序查找方法,如果能找到就直接调用,否则执行第二步
  2. 查看accessInstanceVariablesDirectly方法的返回值,如果是yes表示可以访问类的成员,如果是no则调用setValue:forUndefinedKey抛出异常,默认是yes。
  3. 按照_key,_isKey,key,isKey的顺序依照查找,如果找到了就直接赋值。
    通过KVC的方式修改属性或成员变量的值,不管有没有setter方法,都会触发kvo,它是通过willChangeVaueForKey,didChangeKeyForKey来手动触发的。

valueForKey的执行顺序:
按照getKey, key, isKey, _key的顺序查找方法,如果能找到则返回,否则执行和setKey同样的步骤。

相关文章

  • KVC相关知识(笔记)

    kvc可以通过key来访问对象的某个属性,它常见的方法有: key和keyPath的区别是:如果想要访问的是对象内...

  • kvc相关的知识

    KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...

  • iOS相关知识(四)-- KVC相关

    1、什么是KVC 2、常见的API有 forKey 和 forKeyPath 主要区别是路径区别如下 3、setV...

  • kvc原理的相关知识

    kvc-key value coding键值编码:利用不明确的方法对属性进行存取操作 valueForKey(单级...

  • KVC相关

    什么时候用KVC?当需要做一些快速缩放,平移,二维的旋转时用KVC.比如: [_imageView.layer s...

  • KVC 相关

    1 .KVC 的基本使用kvc 相关的基本方法包括 设置属性值:::setValue: forKey: ;se...

  • KVC

    一、KVC的原理(赋值取值过程) KVC相关常用的API KVC设置值的原理(setValue: forKey:的...

  • iOS知识点,iOS面试题, iOS面试题总结

    推荐 :iOS七年开发之路网络笔记,iOS知识点总结,iOS开发笔记。KVC /KVO的底层原理高质量 iOS 博...

  • KVC&KVO

    KVC Key value coding 键值对编程OC中KVC相关方法都放在NSKeyValueCoding类别...

  • iOS KVC

    OC底层学习笔记(4)-KVC - 简书

网友评论

      本文标题:KVC相关知识(笔记)

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