• KVC和KVO的理解


    • KVC理解?
      • 1;KVC是键值编码,是一种间接访问对象属性的机制
      • 2;使用方法
        • 1;操作基本数据类型,装箱拆箱
        • 2;对对象属性以及属性依然是对象的多层属性,setValue:forKeyPath;valueForKeyPath
        • 3;存放对象的数组使用
        • 4;对字典的使用,字典转模型,setValueForKeysWithDictionary,setValue:forUndefinekey;模型转字典,dictionaryWithValuesForKeys
      • 3;KVC的底层实现
        • 1;首先调用属性的getter和setter方法
        • 2;如果没有,就找带下划线的属性
        • 3;还没有,就按属性名查找
        • 4;最终没有找到会报错
      • 4;KVC注意的地方
        • 1;value不能为空
        • 2;可以为只读,私有属性赋值,会有不安全问题
    • KVO的理解?
      • 1;监听观察对象的某个属性发生更改时,观察者会获得通知
      • 2;使用方法
        • 1;注册观察者,self.person addObserver: forKeyPath:
        • 2;KVO的回调方法,observerValueForKeyPath:
        • 3;移除观察者,dealloc removeObserver
      • 3;KVO的底层实现
        • 1;利用runtime,在运行时会创建一个派生子类,继承自被观察的类
        • 2;更改isa指针为这个新的子类
        • 3;根据keyPath,为被观察的某个属性重写setter方法
        • 4;调用方法,把改变的属性值传递出去
      • 4;注意的地方
        • 1;被观察的对象销毁或者变为局部变量KVO会崩溃
        • 2;观察者被释放掉,但没有移除监听会崩溃
        • 3;注册监听没有被移除,又重新注册了监听会崩溃
  • 相关阅读:
    python基础----装饰器
    python基础----函数的定义和调用、return语句、变量作用域、传参、函数嵌套、函数对象、闭包、递归函数
    python基础----文件处理
    python基础
    django时间的时区问题
    django-admin详细设置
    Django框架-模板系统
    Django框架--路由分配系统
    jQuery教程
    django博客项目11
  • 原文地址:https://www.cnblogs.com/hanfengs/p/5670781.html
Copyright © 2020-2023  润新知