kvo大家都会用.原理百度一大堆.这篇文章主要介绍监听容器类属性变化的方法.
代码截图
代码很详细
网上大多数是第一种方法,需要把数组包装一层.然后添加或者删除时需要做特殊处理.
[[self.person mutableArrayValueForKeyPath:tempArrayTwoType] addObject:XXX];
[[self.person mutableArrayValueForKeyPath:tempArrayTwoType] removeObject:XXX];
第二种方法是取消自动通知,采用手动通知的方式.
点击按钮 打印结果 第一次和第二次截图
大家会发现观察者代理方法里打印的结果不一致,原因是因为修改类型不一致. kind值就是这个类型.
还有其他却别是.手动通知更加灵活.可以在需要的时机进行通知.不用新建对象将数组包装一层.