iOS KVO(键-值观察) 的使用总结


KVO(键-值观察)

// 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( 9 0 , 1 5 0 , 1 4 0 , 4 2 )];
     [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" ];
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值