第一次接触 KVO 是在公司的技术分享会上,同事青藤向大家分享了这个内容。
在 Sina 微博的广州开发者沙龙,Jeff 问我有没有什么可以在技术小沙龙上,给大家分享一下。于是就有了这个内容。
今天在寻觅咖啡给大家简单介绍了一下 KVC 和 KVO。感觉下午讲得有些乱,这里再次整理一下。其实,KVO 实现并不难,关键在于实现背后 NextStep 的库利用 Objective-C 提供的有趣的特性的思路,值得揣摩。
首先 KVC == Key-Value Coding,苹果的文档看这里。对于 KVC 实现的 Protocol 是 NSKeyValueCoding。
而 KVO == Key-Value Observing,苹果的文档看这里。KVO 实现的 Protocol 是 NSKeyValueObserving。
而不论是 NSKeyValueCoding 还是 NSKeyValueObserving 都是利用 Objective-C 的 Category 特性向 NSObject 添加的额外功能。关于 Obj-C 的 Category 特性,可以看我之前的一个翻译《学习 Objective-C》。
原理要说一大堆,实现其实还是蛮简单的。直接祭代码吧。这里的压缩包里有完整的 xcode 工程,和 Slide。
Leave a Reply