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);
网友评论