简而言之,当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运行时工作.