微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在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运行时工作.

原文地址:https://www.jb51.cc/c/110365.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐