美文网首页
KVC和KVO-基本用法

KVC和KVO-基本用法

作者: 肖旭晖 | 来源:发表于2020-06-10 16:35 被阅读0次

(一)KVC

通过键或者键值路径读写值

    1. 通过键取值
      - (nullable id)valueForKey:(NSString *)key;
  • 2.通过键赋值
    - (void)setValue:(nullable id)value forKey:(NSString *)key;

  • 3.通过键值路径取值
    - (nullable id)valueForKeyPath:(NSString *)keyPath;

  • 4.通过键值路径赋值
    - (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath;

(二)KVO

  • 添加观察
    - (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context;

  • 解除观察
    - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath;

1. observer:观察者,也就是KVO通知的订阅者。订阅着必须实现observeValueForKeyPath:ofObject:change:context:方法
2. keyPath:描述将要观察的属性,相对于被观察者。
3. options:KVO的一些属性配置;有四个选项。
4. context: 上下文,这个会传递到订阅着的函数中,用来区分消息,所以应当是不同的。

options所包括的内容
NSKeyValueObservingOptionNew:change字典包括改变后的值
NSKeyValueObservingOptionOld:change字典包括改变前的值
NSKeyValueObservingOptionInitial:注册后立刻触发KVO通知
NSKeyValueObservingOptionPrior:值改变前是否也要通知(这个key决定了是否在改变前改变后通知两次)

参考文章

https://www.jianshu.com/p/b9f020a8b4c9
https://juejin.im/post/5ac5f4b46fb9a028d5675645

相关文章

  • KVC和KVO-基本用法

    (一)KVC 通过键或者键值路径读写值 通过键取值- (nullable id)valueForKey:(NSSt...

  • KVC\KVO-代理-通知-整理中

    KVC\KVO-代理-通知

  • 底层原理:KVC

    KVC的基本用法 KVC的全称key - value - coding,俗称"键值编码",可以通过key来访问某个...

  • iOS开发之KVC和KVO

    KVC和KVO是Objective-C中经常被提到的两个术语。这篇文章将解释KVC和KVO的定义和最基本的用法,更...

  • Key-Value Coding (KVC)原理

    一、kvc基本用法 有如下定义: 1.1 一般setter以及成员变量访问 1.2 kvc间接访问 1.3 kvc...

  • KVC和KVO

    KVC和KVO今天在这里给大家详解一下KVC和KVO的用法, 在这里首先给大家介绍一下KVC的用法,虽然他俩看似只...

  • 说一下KVC和KVO

    本篇采用简单的例子,来介绍 iOS 中的 KVC 和 KVO 的用法和实现原理。 一、KVC 1. KVC是什么 ...

  • KVC (key value code)的初学知识点

    一、KVC (key value code)的基本概念和用法 1、基本概念 2、适用情况:将服务器的内容转化为数...

  • OC-----KVC KVO

    一、KVC(key value code)的基本概念和用法 1、基本概念 1)键-值编码是一个用于间接访问对...

  • iOS -KVO

    KVO-键值观察 KVC:对象取值或者设置值。KVO:监听对象值的变化。 响应式编程的一种。KVO的使用非常简单,...

网友评论

      本文标题:KVC和KVO-基本用法

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