美文网首页
IOS KVO 并没有想象中的那么难

IOS KVO 并没有想象中的那么难

作者: 冰天无幻 | 来源:发表于2020-09-22 14:32 被阅读0次

kvo  本质实际是监听一个一个对象中的某一个指定的变量。

/kvo 监听回调

-(void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void*)context{

keyPath  为监听变量名称

object

change 返回内容 更新后的变量可以在这里取也在使用变量本身 这里返回值和 创建kvo 监听有关系。

context

}

//kvo使用 创建一个 MJPerson 类里面有一个 age 变量(下面是在.h头文件中)。

@interface MJPerson : NSObject

@property (assign, nonatomic) int age;

@end

#import "FirstViewController.h"

#import "MJPerson.h"

@interface FirstViewController ()

@property(strong, nonatomic)MJPerson* mjPerson;

@end

@implementation FirstViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    self.mjPerson = [[MJPerson alloc]init];

    self.mjPerson.age = 10;

//添加监听方法 下面这个方法很重要 

    [self.mjPerson addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];

 options 更加详细的参数 请点击这个链接

}

- (IBAction)touchBtn:(id)sender {

 self.mjPerson.age+=20;

}

//kvo 监听回调

-(void)observeValueForKeyPath:(NSString*)keyPathofObject:(id)objectchange:(NSDictionary *)changecontext:(void*)context{

    NSLog(@"keyPath=%@",keyPath);

    for(NSString* keyinchange) {

        NSLog(@"key=%@,val = %@",key,[changevalueForKey:key]);

    }

    NSLog(@" 更新后的值 key = new val=%@",[change valueForKey:@"new"]);

    NSLog(@"kvo 回调的参数===");

}

创建kvo 的 options 参数:包含了四种值,分别为:

NSKeyValueObservingOptionNew:提供更改前的值

NSKeyValueObservingOptionOld:提供更改后的值

NSKeyValueObservingOptionInitial:观察最初的值(在注册观察服务时会调用一次触发方法)

NSKeyValueObservingOptionPrior:分别在值修改前后触发方法(即一次修改有两次触发)

其实还有一个参数是0 没错就是阿拉伯数字0!!! 这里不可填 nil !!!

相关文章

  • IOS KVO 并没有想象中的那么难

    kvo 本质实际是监听一个一个对象中的某一个指定的变量。 /kvo 监听回调-(void)observeValue...

  • iOS多线程

    iOS多线程基础 在iOS中,多线程的概念应该算是比好理解的了.并没有想象中那么难搞.简单的概念像线程/进程这些概...

  • 其实并没有想象中那么难!

    我生在一个没有山没有水的小城市,2011年9月独自一人,第一次背着包,提着行李,走出家乡,来到济南读大学! 路过泰...

  • 自律并没有想象中那么难

    最近一年一度很流行的一个词汇——自律。每次看到看到这个词总是想做点什么,何为自律?就是自己要求自己按照一定规律、一...

  • 写作并没有想象中那么难

    在我一直以来的印象中,写作都是作家的专属,只有文学上的创作才能称之为“写作”。而且必须要有充足的素材,加上丰富的灵...

  • 有些事儿并没有想象中那么难

    不梳头,不刷牙,不洗脸,生憋,硬编,终于完成了……

  • 说出来,并没有想象中的那么难

    最近一直要考虑着工作的事怎么跟老板开口。不好意思开口原因是因为看着老板一个人从个人到团队的发展,对于一个创业者来说...

  • 生活其实并没有想象中的那么难!

    人生的道路很长很长,经历过喜悦、困难、舍与得才会真正感悟到生活的真谛,才能悟透人生的意义。 其实生活就是由酸甜苦辣...

  • 你害怕的事,并没什么大不了

    我所害怕的事,但它被完成后,好像并没有自己想象中那么可怕,并没有想象中那么难。 最近有一场公开课,虽然上了很多很多...

  • xls1+203+第一次交作业

    完成了作业~要交作业了~画画好像并没有我想象中的那么难

网友评论

      本文标题:IOS KVO 并没有想象中的那么难

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