在Objective-C中观察对任何类属性的更改

简而言之,当Objective-C类中的任何属性发生变化时,有没有办法接收一般通知?我知道我可以使用KVO来监视特定的属性更改,但每当有任何setProperty:消息发送到我的类时,我都需要调用一个特定的方法.我希望能够收到通用通知,而不必担心特别修改了哪个属性.

如果它有助于澄清我为什么要这样做,我正在使用这里找到的一些快速表滚动代码http://blog.atebits.com/2008/12/fast-scrolling-in-tweetie-with-uitableview/

完成此操作的部分过程是,只要修改了表视图单元格中的属性,就需要调用[self setNeedsdisplay].我宁愿不必为我的类中的每个属性重写setter方法来进行这个调用.

解决方法

正如Chuck所说,你可以创建一个从属密钥,或者当然你可以直接观察所有的属性(这比重载setter的工作少).

使用Objective-C运行时,如果您专门使用属性,则可以使用class_copyPropertyList()自动执行此过程.但是,如果此问题出现在您身上,我可能只会执行此操作.如果你只有这个问题的一个实例,那么直接观察属性列表可能更容易,更安全,更易于维护,除非你想在ObjC运行时工作.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...