美文网首页
KVO键值监听小案例

KVO键值监听小案例

作者: 郑州程序员王一 | 来源:发表于2017-05-11 23:22 被阅读23次

概述

KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。
KVO其实也是“观察者”设计模式的一种应用。我的看法是,这种模式有利于两个类间的解耦合,尤其是对于 业务逻辑与视图控制 这两个功能的解耦合。

模型

.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property(nonatomic,copy)NSString *name;
@property(nonatomic,assign)NSInteger age;
@end

控制器

- (void)viewDidLoad {
    [super viewDidLoad];
    self.person = [[Person alloc]init];
    self.person.name = @"王二";
    self.person.age = 18;
    [self.person addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew context:nil];
    
    //UILabel
    self.ageLabel = [[UILabel alloc]init];
    self.ageLabel.frame = CGRectMake(10, 200, 300, 30);
    self.ageLabel.text = [NSString stringWithFormat:@"%@ 的年龄是: %ld 岁",self.person.name,self.person.age];
    [self.view addSubview:self.ageLabel];
    
    
    //按钮
    UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(50, 300, 200, 30)];
    [btn setTitle:@"王二增加五岁" forState:UIControlStateNormal];
    btn.backgroundColor = [UIColor redColor];
    [btn addTarget:self action:@selector(clickBtn) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
}

-(void)clickBtn{
    self.person.age += 5;
}

/* KVO function, 只要object的keyPath属性发生变化,就会调用此函数*/
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"age"] && object == self.person) {
        self.ageLabel.text = [NSString stringWithFormat:@"%@现在的年龄是: %ld", self.person.name, self.person.age];
    }
}

相关文章

  • KVO键值监听小案例

    概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接...

  • iOS面试题与核心基础之KVC&KVO

    KVO KVO是Key-value observing,俗称键值监听(键值观察),可以用于监听某个属性值的改变。当...

  • OC底层原理学习笔记(二)- KVO、KVC的本质

    一、KVO 1、KVO实现属性监听的原理KVO俗称“键值监听”,可以用于监听某个对象属性值的改变未使用KVO监听的...

  • KVO 相关

    1 . KVO 的基本使用kvo "键值监听", 全称"Key-Value Observing" ,监听对象属性...

  • iOS中KVO

    KVO(Key Value Observing,即键值监听) KVO机制NSKeyValueObserving协议...

  • iOS KVO

    kvo:key-value-observing:键值监听,可以监听某个对象属性的值 前言 使用(kvo 监听foo...

  • KVO - KVC 从根本原理透析

    一.KVO KVO的全称为Key-Value Observing,也就是我们常说的键值监听。通过KVO我们可以监听...

  • iOS KVO KVC

    KVO 什么是KVO? KVO的全称是Key-Value Observing,俗称"键值监听",可以用于监听摸个对...

  • iOS KVO

    一、KVO 简述 KVO 全称 Key Value Observing,俗称“键值监听”;可以监听对象某个属性值的...

  • 关情纸尾---UIKit基础-简述KVC和KVO

    ♥概述 ♥键值编码KVC ♥点语法和KVC ♥ 键值监听KVO ♥KVO的使用步骤也比较简单:

网友评论

      本文标题:KVO键值监听小案例

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