首页 > 移动平台 > 详细

iOS 简单的描述KVO使用

时间:2015-10-18 00:58:26      阅读:357      评论:0      收藏:0      [点我收藏+]

//

//  ViewController.m

//  KVOtest

//

//  Created by Mac on 15/10/17.

//  Copyright © 2015年 聂小波. All rights reserved.

//

 

#import "ViewController.h"

 

@interface ViewController ()

@property (nonatomic, strong) UIButton *kvobtn;

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    

    _kvobtn=[UIButton new];

    _kvobtn.tag=10;

    

    //对属性添加值改变监听

    [_kvobtn addObserver:self forKeyPath:@"tag" options:NSKeyValueObservingOptionNew context:nil];

    

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(4.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        //改变属性值

        _kvobtn.tag=11;

        

    });

    

}

 

#pragma mark- KVO获得值改变调用

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

    if ([keyPath isEqualToString:@"tag"]) {

        NSLog(@"===============changed===============");

 

    }

 

}

 

#pragma mark- 移除监听,如果没有移除会导致崩溃

-(void)dealloc{

    [self removeObserverFromUIButton:_kvobtn];

    [self removeNotification];

}

-(void)removeObserverFromUIButton:(UIButton *)kvobtn{

    [kvobtn removeObserver:self forKeyPath:@"tag"];

    

}

-(void)removeNotification{

    [[NSNotificationCenter defaultCenter] removeObserver:self];

}

 

 

@end

 

iOS 简单的描述KVO使用

原文:http://www.cnblogs.com/niexiaobo/p/4888655.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!