KVO的简单使用

来源:互联网 发布:学会编程能做什么 编辑:程序博客网 时间:2024/05/17 22:10

  KVO:  Key Value Observing

  主要用于视图、数据交互,比如界面中相关数据发生了变化,界面的显示也要跟着变化,这时候就需要 KVO 建立界面和数据之间的连接。

1.使用场景一

  StockObj.h

#import <Foundation/Foundation.h>@interface StockObj : NSObject@property(nonatomic,strong) NSString *stockID;@property(nonatomic,strong) NSString *price;- (void)changeStockPrice:(NSString *)newPrice;@end

  StockObj.m

#import "StockObj.h"@implementation StockObj- (void)changeStockPrice:(NSString *)newPrice{    self.price = newPrice;}@end
  vc中首先注册观察

    self.stock = [[StockObj alloc] init];    self.stock.stockID = @"SHDQ";    self.stock.price = @"10";    [self.stock addObserver:self forKeyPath:@"price" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
  实现方法

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{    if([keyPath isEqualToString:@"price"] && object == _stock){        self.myLabel.text = [change objectForKey:@"new"];    }}
  当 price 这个属性被改变时,vc 的 myLabel 也会更新改变的值

2.自己实现 KVO


原创粉丝点击