首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    KVC 和 KVO

    Key Value Observing 介绍 KVO其实是一种观察者模式,利用它可以很容易实现视图组件和数据模型的分离,当数据模型的属性值改变之后作为监听器的视图组件就会被激发,激发时就会回调监听器自身... 或者 KVO 是一个非正式的协议,该协议定义了一个观察和通知对象之间状态变化的通用机制。...这是KVO机制提供的最大的优点。因为这个方案已经被明确定义,获得框架级支持,可以方便地采用。开发人员不需要添加任何代码,不需要设计自己的观察者模型,直接可以在工程里使用。...其次,KVO的架构非常的强大,可以很容易的支持多个观察者观察同一个属性,以及相关的值。 Swift的KVO与KVC Swift版本的的就看这篇文章吧,内容很详细。...漫谈 KVC 与 KVO Reference iOS开发系列—Objective-C之KVC、KVO

    88210

    KVO实现原理

    KVO(key value observing)键值监听是我们在开发中常使用的用于监听特定对象属性值变化的方法,常用于监听数据模型的变化 KVO是为了监听一个对象的某个属性值是否发生变化。...所以KVO的本质就是监听对象有没有调用被监听属性对应的setter方法 在学习实现原理之前我们首先先了解一下KVO常用的有哪些方法 KVO常用方法 /* 注册监听器 监听器对象为observer,被监听对象为消息的发送者即方法的调用者在回调函数中会被回传...KVO前后对象的改变了 未使用KVO监听的对象 [8oczapt7mn.png] 使用KVO监听的对象 [jkpykiwnrw.png] 1、重写class方法是为了我们调用它的时候返回跟重写继承类之前同样的内容...(KVO的本质是什么?)...,如果不记录旧的值,那就没有改变一说了 3、直接修改成员变量会触发KVO吗 不会触发KVO,因为KVO的本质就是监听对象有没有调用被监听属性对应的setter方法,直接修改成员变量,是在内存中修改的,不走

    1.3K00

    KVO详解(二)

    自定义KVO 上篇文章中我介绍了KVO的简单用法以及KVO的实现细节,为了加深对KVO的理解,我决定从头到尾介绍一下如何自定义KVO。...点进KVO的API,我发现所有的KVO的API都是通过类目的形式实现的: ? 因此,自定义KVO的第一步,就是创建一个NSObject的分类: ?...关于函数式编程,我在之前的文章中有提到过: 1,Block 的高级使用 2,Swift进阶六——函数和闭包 函数式编程会将封装粒度降低到函数级别,它会将函数作为封装的基本单元,并且会减少中间不可变因素的产生...KVO的自动移除 首先我们需要考虑的点是,什么时候去移除KVO的观察? 实际上,移除KVO的时间点应该是被观察对象销毁的时候。...的使用、KVO的原理以及KVO的自定义,相信到这里诸位对KVO已经有了一个相对比较深入的了解了。

    91531

    KVO编程指南

    一个简单的例子说明KVO如何在你的应用程序中有用。假设一个Person对象与一个Account对象进行交互,表示该人在银行的储蓄账户。...更好的方法是使用KVO,类似于发生更改时Person接收一个通知。 要使用KVO,首先必须确保所观察的对象(本例中的Account)符合KVO标准。...重要提示:并非所有的类都符合KVO标准。 您可以按照KVO合规中所述的步骤确保您自己的类符合KVO标准。 通常,苹果提供的框架中的属性只有符合KVO标准才能被KVO。...三、KVO合规性 为了符合KVO标准,一个类必须确保以下内容: 该类必须符合该属性的键值编码,如确保KVC合规性中所述。...KVO支持与KVC相同的数据类型,包括Objective-C对象以及标量和结构支持中列出的标量和结构。 该类发出该属性的KVO变化通知。

    1.3K20

    切勿将辅助驾驶宣传成智能驾驶 | 肘子的 Swift 周报 #078

    访问我的博客 肘子的 Swift 记事本[2]查看更多的文章。加入 Discord[3]社区,与 2000+ 中文开发者深入交流 Swift、SwiftUI 开发体验。...Swift 的跨平台编译 [9] 提升跨平台编译能力,是 Swift 向全平台生态迈进的重要一步。...本文分享了他在 macOS 项目中,通过 NSViewRepresentable嵌入 MKMapView,并借助视图层级探索,找到一种可行方案,最终成功生成包含路径、图层与标注的完整地图图像。...文章不仅解释了为何标注无法直接渲染成图像,还提供了对 NSView与 MKMapView的扩展代码,实现了当前地图状态的稳定导出。...[14] Antonella Giugliano: https://x.com/ella_developer [15] 将地图视图保存成图片 (Creating an Image from an MKMapView

    42400

    KVO详解及底层实现

    什么是KVO?? KVO就是NSKeyValueObserving,请看官方文档的解释: 大概翻译如下: 一种非正式协议,通知其他对象的指定属性发生了改变。...dealloc:应该是处理对象销毁之前的一些收尾工作 _isKVOA:告诉系统使用了kvo 拓展 学任何东西,通过我们的思考一定会问出一些别的问题,通过深入了解kvo,下面两个问题,是面试经常会被问到的...知道了原理,能不能自己写一个KVO?? 动态生成一个自己的类 既然是动态生成,肯定是利用了苹果的runtime机制,通过上面对KVO的学习,也了解到了runtime的强大之处。...自己动手写一个KVO KVO底层实现还是很复杂的,下面我只是简单的写下实现过程: 因为它是一个非正式协议,给NSObject新建一个Category,NSObject+kvo.h,添加监听方法: .h文件...代码地址 总结 kvo用法其实非常简单,但是深入了解,深入思考的话,知识点非常多。花了一天多的时间,期间查阅了很多文档(发现官方文档真的是非常有用),总算是写完了,对KVO有了一个更深入的认识和理解。

    2.6K20
    领券