码迷,mamicode.com
首页 > 其他好文 > 详细

KVO(键-值观察)

时间:2014-07-16 18:59:45      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:color   使用   os   for   io   cti   

// 1.键-值观察 
// 2.它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。 
// 3.符合KVC(Key-ValuedCoding)机制的对象才可以使用KVO 
// 4.实现过程 
// ①注册,指定被观察者 
// ②实现回调方法 
// ③移除观察

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    // 实例化一个观察者对象
    self.stockForKVO = [[StockData alloc] init];
    // 初始化
    [self.stockForKVO setValue:@"searph" forKey:@"stockName"];// KVC
    [self.stockForKVO setValue:@"10.0" forKey:@"price"];// KVC
     
    // 监听并显示在 lable 里 - 注册观察者
    [self.stockForKVO addObserver:self forKeyPath:@"price" options:NSKeyValueObservingOptionNew context:nil];
     
    self.myLable.textColor = [UIColor redColor];
    self.myLable.text = [self.stockForKVO valueForKey:@"price"];
     
    // 创建 button 按钮
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setFrame:CGRectMake(9015014042)];
    [button setTitle:@"按钮" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}
 
// button响应方法
- (void)buttonAction
{
    [self.stockForKVO setValue:@"20.0" forKey:@"price"];
}
 
// 回调方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"price"])
    {
        self.myLable.text = [self.stockForKVO valueForKey:@"price"];
    }
}
 
- (void)dealloc
{
    // 移除观察者
    [self.stockForKVO removeObserver:self forKeyPath:@"price"];
}

 

KVO(键-值观察),布布扣,bubuko.com

KVO(键-值观察)

标签:color   使用   os   for   io   cti   

原文地址:http://www.cnblogs.com/yangmx/p/3844949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!