KVO代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/48896383

    // KVO 作用:观察对象的值是否发生变化,可以展示变化前后的值     // 某个对象添加观察者     /*      参数1:self      参数2:观察被观察扎哪一个具体的值发生变化      参数3:取到被观察者变化前及变化后的值      */     [_dogModel addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew| NSKeyValueObservingOptionOld context:nil];     [_catModel addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew |NSKeyValueObservingOptionOld context:nil]; // 实现KVO的相关方法 // 只要被观察者的值发生变化就执行 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {     /*      参数1:被观察的具体值      参数2:被观察者的指针      参数3:变化前以及后的值  key为old的时:变化前的值,可以为new时:变化后的值      参数4:上下文      */     // 判断被观察者是属于哪个类?     if ([object isKindOfClass:[DogModel class]]) {         NSString * old = [change objectForKey:@"old"];         NSString * new = [change objectForKey:@"new"];         // 展示         _label.text = [NSString stringWithFormat:@"old:%@   new:%@", old, new];     }     else if ([object isKindOfClass:[CatModel class]])     {         NSString * old = [change objectForKey:@"old"];         NSString * new = [change objectForKey:@"new"];         _nextLabel.text = [NSString stringWithFormat:@"old:%@  new:%@",old, new];     } } // 注销观察者 - (void)dealloc {     [_dogModel removeObserver:self forKeyPath:@"name" context:nil]; }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏转载gongluck的CSDN博客

第14章 高级I/O函数

设置套接字时间限制: 1、使用alarm函数和SIGALRM信号 2、使用由select提供的时间限制 3、使用SO_RCVTIMEO和SO_SNDTIM...

30040
来自专栏陈满iOS

[iOS源码笔记]·第三方网络图片处理框架:SDWebImage网络下载及缓存管理策略

typedef void(^SDExternalCompletionBlock)(UIImage * _Nullable image, NSError * _N...

15510
来自专栏iOS开发攻城狮的集散地

UIActivityViewController系统原生分享-仿简书分享

46880
来自专栏技术之路

ios 接收 c# socket udp 组播

最近用wcf 服务 给ios和安卓做接口,做了几个ios的项目  用udp 组播 让ios多终端接收和刷新方法 做一个简单的小例子会把工程给大家下载的   c#...

27680
来自专栏哈雷彗星撞地球

iOS 中如何判断当前是2G/3G/4G/5G/WiFi

5G 什么的,还得等苹果API更新啊,不过将来还是这个处理过程就是了。 关于判断当前的网络环境是2G/3G/4G,这个问题以前经常看到,最近在一工程里看到了如...

25820
来自专栏向治洪

RCTEventEmitter使用

在0.27版本之前,RN的Native端向js端发射消息主要通过sendDeviceEventWithName的方式,相关代码如下。 @synthesize b...

48670
来自专栏ios 技术积累

聊聊怎么阅读SDWebImage源码

关于SDWebImage的介绍就不多说了,网上很多。我们主要聊聊怎么阅读SDWebImage的源码。 阅读源码前首先我们要思考几个问题: 1.SDWebIm...

9510
来自专栏iOS技术

iOS多线程应用(三):NSOperation

NSOperation是基于GCD的面向对象封装,在各大开源库里面我们常常看到它的身影。它的使用很简单易懂,基本上你点进Api就会用了,本文就最常用的功能进行讲...

336110
来自专栏美团技术团队

ReactiveCocoa中潜在的内存泄漏及解决方案

ReactiveCocoa是GitHub开源的一个函数响应式编程框架,目前在美团App中大量使用。用过它的人都知道很好用,也确实为我们的生活带来了很多便利,特别...

54380
来自专栏岑志军的专栏

OC和Swift互相跳转

15840

扫码关注云+社区

领取腾讯云代金券