美文网首页
KVO的简单使用

KVO的简单使用

作者: 碧海云天V | 来源:发表于2017-06-19 15:58 被阅读16次

    KVO即“键值监听”,通常需要三步:

    1、添加监听对象【addObserver: forKeyPath: options: context:】

    2、执行监听代理【- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object{}】

    3、移除监听【removeObserver: forKeyPath: context: 】

    KVO_Demo


    图片示例:



    代码示例:

    //----------在.h文件中

    #import<UIKit/UIKit.h>
    
    @interfaceViewController :UIViewController
    
    @end
    

    //----------在.m文件中

    #import"ViewController.h"
    
    @interface ViewController()
    
    @property(nonatomic ,strong)NSString *price;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
    
    [superview DidLoad];
    
    self.price=@"10";
    
    //添加监听对象
    
    [self addObserver:self forKeyPath:@"price" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
    
    NSLog(@"---------%@",_price);
    
    [self performSelector:@selector(changeGrade) withObject:nil afterDelay:5.0];
    
    }
    
    - (void)changeGrade {
    
    self.price=@"10000";
    
    }
    
    //执行监听代理
    
    - (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object
    
    change:(NSDictionary*)change context:(void*)context
    
    {
    
    if(object ==self && [keyPath isEqualToString:@"price"]) {
    
    NSLog(@"---------%@",_price);
    
    }else{
    
    [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
    
    }
    
    }
    
    //移除监听
    
    - (void)dealloc {
    
    [self removeObserver:self forKeyPath:@"price" context:nil];
    
    }
    
    @end
    

    相关文章

      网友评论

          本文标题:KVO的简单使用

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