iOS基础知识整理之KVC与KVO

  • 如何理解KVC?
    在iOS中每一个对象的创建属性的过程中,以KVC的角度理解会创建一个对应的键值对,这个键值对的key为设置的对象的属性值,而对于该属性的值为对应的value值。如果存在多层调用关系需要用到keypath来实现。如下Person类型实力对象有1个属性为name对这个属性的赋值以及取值的过程如下,通过key和value的形式。如果存在多层属性需要通过keypath的如p1.name形式作为key的方式来实现。
   Person *p1 = [[Person alloc] init];
    p1.name = @"xiaoming";
       
    NSLog(@"name value = %@",[p1 valueForKey:@"name"]);
    
    [p1 setValue:@"xiaohua" forKey:@"name"];
    NSLog(@"name new value = %@",[p1 valueForKey:@"name"]);

  • 如何理解KVO?
    KVO是在kvc的基础上,通过观察观察对象属性对应的key值对应的value值得变化来检测。来实现KVO的目的。实现如下所示
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    Person *p1 = [[Person alloc] init];
    p1.name = @"xiaoming";
    p1.address = @"hello world";
    [p1 addObserver:self
         forKeyPath:@"name"
            options:0
            context:nil];
    NSLog(@"name value = %@",[p1 valueForKey:@"name"]);
    [p1 setValue:@"xiaohua" forKey:@"name"];
    NSLog(@"name new value = %@",[p1 valueForKey:@"name"]);
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
{
    if (keyPath.length>0) {
        NSLog(@"name kvo value = %@",[object valueForKey:keyPath]);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值