• iOS-KVC/KVO的理解


    1.KVC:Key-Value Coding,直译是:键值编码。简单来讲,就是给属性设置值的;复杂来讲,根据网上的说法,KVC运用了一个isa-swizzling技术。isa-swizzling就是类型混合指针机制。KVC主要通过isa-swizzling,来实现其内部查找定位的。isa指针,如其名称所指,(就是is a kind of的意思),指向维护分发表的对象的类。该分发表实际上包含了指向实现类中的方法的指针,和其它数据。

    KVC就是一种通过字符串去间接操作对象属性的机制。


    2.Key-Value Observing (简写为KVO):当指定的对象的属性被修改了,允许对象接受到通知的机制。每次指定的被观察对象的属性被修改的时候,KVO都会自动的去通知相应的观察者,相当于设计模式中的观察者模式。

    KVO 就是一个在语言框架层面实现的观察者模式 通过kvc的方式修改属性时,会主动通知观察者。

    KVO的优点:
    1当有属性改变,KVO会提供自动的消息通知。这样的架构有很多好处。首先,开发人员不需要自己去实现这样的方案:每次属性改变了就发送消息通知。这是KVO 机制提供的最大的优点。因为这个方案已经被明确定义,获得框架级支持,可以方便地采用。开发人员不需要添加任何代码,不需要设计自己的观察者模型,直接可 以在工程里使用。其次,KVO的架构非常的强大,可以很容易的支持多个观察者观察同一个属性,以及相关的值。

    缺点 :

            1.我们观察的属性必须使用strings来定义。因此在编译器不会出现警告以及检查;

            2.对属性重构将导致我们的观察代码不再可用;

            3.复杂的“IF”语句要求对象正在观察多个值。这是因为所有的观察代码通过一个方法来指向;

            4.当释放观察者时不需要移除观察者。

    只要有梦想,人生就有意义。。。
  • 相关阅读:
    11-3 多道批处理系统
    URAL 1108 简单的树形dp背包问题
    POJ 2486 树形dp
    HDU 2242 连通分量缩点+树形dp
    POJ 3140 Contestants Division
    POJ 2378 Tree Cutting
    ZOJ 3201 树形背包问题
    POJ 1655 Balancing Act && POJ 3107 Godfather
    COJ 1351 Tree Counting 动态规划
    codeforces 219D 树形dp
  • 原文地址:https://www.cnblogs.com/jiafuyang/p/4822264.html
Copyright © 2020-2023  润新知