KVO

作者: 小周老周都是我 | 来源:发表于2020-06-30 10:48 被阅读0次

    https://www.jianshu.com/p/53c68a00d2fc

    KVO iOS11之后修改成员变量, 不需要移除监听

    KVO 防止崩溃

    1. 不实现 -observeValueForKeyPath:ofObject:change:context 方法, 会崩溃

    2. 不移除监听, 也会崩溃, (多次添加KVO监听, 移除的时候只移除一次也会崩溃 ios11之前)

    3. 分类的属性也能实现KVO

    KVO设置依赖 E=A+B+C;  任意一个改变都会触发KVO监听方法

    自定义KVO

    KVO 聚合运算

    NSInteger sum = [[persons valueForKeyPath:@"@sum.age"] integerValue];

    NSInteger min = [[persons valueForKeyPath:@"@min.age"] integerValue];

    NSInteger max = [[persons valueForKeyPath:@"@max.age"] integerValue];

    float avg = [[persons valueForKeyPath:@"@avg.age"] floatValue];

    NSInteger count = [[persons valueForKeyPath:@"@count.age"] integerValue];

    NSLog(@"sum=%zd", sum);

    NSLog(@"min=%zd", min);

    NSLog(@"max=%zd", max);

    NSLog(@"avg=%g", avg);

    NSLog(@"count=%zd", count);

    NSArray *arr = @[@1, @2, @3, @4];

    NSNumber *avg = [arr valueForKeyPath:@"@avg.floatValue"];

    NSNumber *sum = [arr valueForKeyPath:@"@sum.integerValue"];

    NSLog(@"avg=%@", avg);

    NSLog(@"sum=%@", sum);

    相关文章

      网友评论

          本文标题:KVO

          本文链接:https://www.haomeiwen.com/subject/vibtqktx.html