您的位置:首页 > 移动开发 > IOS开发

[10秒学会] - iOS kvo 使用(demo)

2016-04-06 00:00 465 查看
摘要: [10秒学会] - iOS kvo 使用(demo)

前言:我是赵大财,10秒学会系列,绝不废话连篇! 力求10秒,让你了解会用此知识点

DCmodel.h

#import <Foundation/Foundation.h>

@interface DCtestModel : NSObject

@property(copy,nonatomic) NSString *name;

- (instancetype)initWithKvo;

@end


DCmodel.m

#import "DCtestModel.h"

@implementation DCtestModel

- (instancetype)initWithKvo {
self=[super init];
if (self) {

}
return self;
}
@end


直接上代码

//
//  ViewController.m
//  DCKvo
//
//  Created by 赵大财 on 16/4/6.
//  Copyright © 2016年 tshiny. All rights reserved.
//

#import "ViewController.h"
#import "DCtestModel.h"

@interface ViewController ()
@property(nonatomic,strong) DCtestModel *model;
@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

_model = [[DCtestModel alloc]initWithKvo];
[_model addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil];
/*
NSKeyValueObservingOptionNew 把更改之前的值提供给处理方法
NSKeyValueObservingOptionOld 把更改之后的值提供给处理方法
NSKeyValueObservingOptionInitial 把初始化的值提供给处理方法,一旦注册,立马就会调用一次。通常它会带有新值,而不会带有旧值。
NSKeyValueObservingOptionPrior 分2次调用。在值改变之前和值改变之后
*/
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
_model.name =@"zhao";
_model.name =@"da";[_model removeObserver:self forKeyPath:@"name"];
_model.name =@"cai";
}

//// 当监听的属性改变就会调用这个方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{

NSLog(@"%@",change);

}

@end


//运行结果

2016-04-06 18:17:46.692 DCKvo[24931:549533] {
kind = 1;
new = zhao;
}
2016-04-06 18:17:46.692 DCKvo[24931:549533] {
kind = 1;
new = da;
}
// cai 已被移除 所以不在监听
================================
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOSKvo使用 iOSKvoDemo