美文网首页
swift之KVO观察者属性

swift之KVO观察者属性

作者: 心淡然如水 | 来源:发表于2016-07-26 20:49 被阅读114次

已经好一段时间没有写iOS了,我决定不能忘了这个技能,每天拿出一点时间来学习一下苹果方面的知识,KVO观察者这个东西能提供一种简单的方法实现两个对象间的同步,model和view之间同步等吧。还可以用key paths来观察属性,因此也可以观察嵌套对象。

那么我为什么要学习kvo呢 ?因为苹果新出的WKWebView对h5兼容、性能以及新特性的支持还有自带的内置手势,总之如果用WKWebView来实现js的交互会有一种原生的效果吧 !!我觉得是这样!WKWebView与h5之间的交互就用到了kvo这种监听方式。

自己百度查阅了一下kvo的方法,动手写了一个小demo 给大家分享一下:

调用创建的类 在 Swift 中使用 KVO 的前提条件:1.观察者和被观察者都必须是 NSObject 的子类;2.观察的属性需要使用 @dynamic 关键字修饰。

这里呢我特地查阅了一下,苹果为什么要@dynamic来修饰才能进行KVO,@dynamic表示该属性的存取都由 runtime 在运行时来决定,由于 Swift 基于效率的考量默认禁止了动态派发机制,因此要加上该修饰符来开启动态派发;除此之外,在 NSObject 子类中几乎没有属性默认是使用 @dynamic 修饰(该关键字最常见场景是在 Core Data 里,NSManagedObject子类的属性都是 dynamic 的),所以若想对某个属性进行观察,还必须在当前的子类中 override 该属性,override 时,采用 super 的实现即可。

必须是NSObject:观察者和被观察者都必须是 NSObject 的子类,因为 OC 中KVO的实现基于 KVC 和 runtime 机制,只有是 NSObject 的子类才能利用这些特性

具体的可以看http://www.jianshu.com/p/e036e53d240e

if let where 查阅了一下发现是一个非常实用的一个小tip吧,作用就是双重if ,简化了代码,相当于if let change = change {if context == &mycontext{ print()}}  在这里简单的写了一下

记得以前用delegate 跟通知的时候就算没有deinit 也不会报错,但是今天在写的KVO的时候也没有写 (懒了) 哈哈 !! 最后报了错误!所以大家记得注销监听哟  

希望明天有空能把WKWebView的交互学会分享给大家吧  !!

希望本片博客可能帮助到那些需要帮助的人!!!

每天更新学到的东西!学无止境!!!!

本文原创   转载注明出处

相关文章

  • 417,Swift 怎么实现KVO(面试点:基于NSObject

    一、KVO kvo键值观察者 Swift继承NSObject的KVO swift 实现kvo需要两个条件,第一要是...

  • swift之KVO观察者属性

    已经好一段时间没有写iOS了,我决定不能忘了这个技能,每天拿出一点时间来学习一下苹果方面的知识,KVO观察者这个东...

  • iOS KVO、KVC的使用和探究

    一、KVO KVO 的作用: kvo 就是监听某个对象的属性,在该属性的值发生变化时,通知观察者。 KVO 的简单...

  • 初学swift之KVO

    初学swift之KVO KVO相当于给一个已有对象的属性添加一个属性观察器 KVO三步 1.注册 2.监听 3.移...

  • KVO的发现

    1.什么是KVO KVO (key value observer) 观察者模式, 监听对象属性的变化 2.KVO的...

  • iOS KVO基础知识

    iOS KVO基础知识 1. 简介 KVO其实就对应设计模式的观察者模式,观察者能够观察其他对象(被观察者)的属性...

  • KVO实现原理

    KVO KVO 是 Key-Value-Observing 的简称。 KVO 是一个观察者模式。观察一个对象的属性...

  • KVO

    //KVO key value observer (键值观察者) //跟属性层有关的操作会考虑使用kvo;1.注册...

  • iOS知识点小结

    1.KVO1.1> KVO 简介:KVO 是 OC 观察者设计模式的一种实现.KVO 指定一个被观察的对象的属性,...

  • KVO

    什么是KVO? KVO是观察者模式,当一个被观察者对象属性发生改变时,观察者会收到通知。 有利于两个类之间的解耦。...

网友评论

      本文标题:swift之KVO观察者属性

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