【原】iOS下KVO使用过程中的陷阱
KVO,全称为Key-Value Observing,是iOS中的一种设计模式,用于检测对象的某些属性的实时变化情况并作出响应。网上广为流传普及的一个例子是利用KVO检测股票价格的变动,例如这里。这个例子作为扫盲入门还是可以的,但是当应用场景比较复杂时,里面的一些细节还是需要改进的,里面有多个地方存在crash的危险。本文旨在逐步递进深入地探讨出一种目前比较健壮稳定的KVO实现方案,弥补网上大部分教程的不足! 首先,假设我们的目标是在一个UITableViewController内对tableview的contentOffset进行实时监测,很容易地使用KVO来实现为。 在初始化方法中加入: 1 [_tableView addObserver: self forKeyPath:@ "contentOffset" options: NSKeyValueObservingOptionNew context: nil ]; 在dealloc中移除KVO监听: 1 [_tableView removeObserver: self forKeyPath:@ "contentOffset" con...
