iOS中对数组进行KVO

iOS中,KVO的基本原理是重写了被观察属性的setter方法。所以一般情况下只有通过调用setter方法对值进行改变才会触发KVO,直接访问实例变量修改值是不会触发KVO的。

对于NSMutableArray来说,当调用addObject、removeObject时,并不会触发它的setter方法。所以要KVO一个NSMutableArray,就需要用到(NSMutableArray *)mutableArrayValueForKey:(NSString *)key方法:

1
2
3
4
@property (nonatomic, strong) NSMutableArray *titleArray;

//添加元素时可以触发KVO
[[self mutableArrayValueForKey:@"titleArray"] addObject:"name"];