iOS- KVC和KVO

作者: 磊CC | 来源:发表于2016-04-23 09:17 被阅读55次

#pragma mark---KVC---

KVC:key(键)-value(值)-code(编码)

键值编码->通过key(字符串)改变value的值进行编码

可以改变对象的全局变量(公开的,不能写在延展里面)的值、属性值

字典转模型->通过KVC来实现

变量或者属性的名字必须和key的字符串统一

KVC是通过字符串(key)来找到变量进行赋值

KVC是通过属性的名字当做一个字符串(key)来给属性赋值

赋值公式: [对象名setValue:值forKey:与属性名相同的字符串];

取值公式: [对象名valueForKey:与属性名相同的字符串]

@()转化为NSNumber类型

键路径:与文件路径相似,表示键的层级关系使用.来分隔

赋值公式: [对象名setValue:值forKeyPath:键路径];

取值公式: [对象名valueForKeyPath:键路径];

content是infoModel的属性infoModel是Model的属性

content的键路径:@"infoModel.content"


#pragma mark---KVO----

KVO:key(键)-value(值)-observer(观察者)

键值观察者:通过对一个对象属性或者变量值的观察来做出对应的动作只要key对应的值发生改变就会告诉观察者新旧值的改变

通过key来判断是哪一个KVO

*条件:

1、有观察者、观察的对象

2、只要值发生改变就去触发告诉观察者值已经发生改变

3、*不再需要观察这个对象的时候移除观察者不移除就会崩溃

*给被观察的对象添加观察者:

[被观察的对象addObserver:selfforKeyPath:@"观察的属性"options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld

context:nil];

*值发生改变触发:(keyPath观察的哪个属性、object可以用于传值、change里面是字典包含发生改变的新值和旧值)

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object

change:(NSDictionary *)change context:(void*)context

*移除观察者:[被观察的对象removeObserver:selfforKeyPath:@"观察的属性"];

相关文章

  • iOS - KVO

    [toc] 参考 KVO KVC 【 iOS--KVO的实现原理与具体应用 】 【 IOS-详解KVO底层实现 】...

  • KVC,KVO

    KVC , KVO KVC和KVO的区别及应用 KVC/KVO原理 1. KVC键值编码 KVC,即是指NSKey...

  • KVC、KVO

    KVC、KVO探识(一)KVO和KVO的详细使用 KVC、KVO探识(二)KVC你不知道的东西 KVC、KVO探识...

  • ios基础——KVO、KVC

    KVO和KVC常见问题: 1.KVC和KVO是什么.2.KVC和KVO的原理是什么3.KVC和KVO的使用场景4....

  • iOS- KVC和KVO

    #pragma mark---KVC--- KVC:key(键)-value(值)-code(编码) 键值编码->...

  • 可能碰到的iOS笔试面试题(7)--KVO-KVC

    KVC-KVO KVC的底层实现? KVO的底层实现? 什么是KVO和KVC? KVO的缺陷? KVO是一个对象能...

  • KVC 和 KVO

    iOS-KVC和KVO精炼讲解(干货)KVC 和 KVOiOS开发系列--Objective-C之KVC、KVO细...

  • iOS-底层-KVO和KVC

    一. KVO 1. KVO的基本使用 KVO的全称是Key-Value Observing,俗称“键值监听”,可以...

  • KVC、KVO的本质

    这篇文章介绍KVC、KVO的本质。如果你对KVC、KVO不了解,推荐先查看其用法:KVC和KVO学习笔记[http...

  • iOS-KVC和KVO

    重新整理一波KVO和KVC. 抛出几个常见问题 : 1.KVC和KVO是什么.2.KVC和KVO的原理是什么3.K...

网友评论

    本文标题:iOS- KVC和KVO

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