• KVC&KVO


    KVC
    1.KVC直接修改某个对象的某个属性
    [stu setValue:@"MIKE" forKey:@"name"];
    [stu setValue:@10 forKey:@"age"];
    2.KVC也可以批量设置某个对象的所有属性
    [stu setValuesForKeysWithDictionary:@{@"age": @10,@"name":@"rose"}];
    3.批量获取对象的属性
    NSDictionary *dict = [stu dictionaryWithValuesForKeys:@[@"name",@"age"]];
    4.使用键值路径间接修改对象的属性值
    stu.book = [[Book alloc] init];
    [stu setValue:@1.22 forKeyPath:@"book.price"];
    5.通过KeyPath来获取数组内所有对象的相同属性
    NSArray *array = @[stu,stu1,stu2];
    NSArray *names = [array valueForKeyPath:@"name"];
    6.通过keyPath来计算所有书的价格
    stu.books = @[[Book bookWithPrice:2.2],[Book bookWithPrice:2.1],[Book bookWithPrice:10]];
    int sum = [[stu valueForKeyPath:@"books.@sum.price"] intValue];
    所有用key的地方都可以用keyPath

    =======================================KVO=======================================


    KVO是监听对象属性的改变
    //通过KVO来监听stu的name属性的变化
    [stu addObserver:observer forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil];
    //属性改变后,会调用监听者的方法,并把一系列参数发送过来
    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
    {
    NSLog(@"%@",keyPath);
    NSLog(@"%@",object);
    NSLog(@"%@",change[@"new"]);
    }

  • 相关阅读:
    线段树
    哈希,hash
    单调栈
    树的重心
    背包问题
    最小生成树
    二分图匹配
    题解 P6355 [COCI2007-2008#3] DEJAVU
    题解 P6745 『MdOI R3』Number
    题解 P2080 增进感情
  • 原文地址:https://www.cnblogs.com/yinqiang/p/3491835.html
Copyright © 2020-2023  润新知