加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 03:45:51 所属栏目:百科 来源:网络整理
导读:简而言之,当Objective-C类中的任何属性发生变化时,有没有办法接收一般通知?我知道我可以使用KVO来监视特定的属性更改,但每当有任何setProperty:消息发送到我的类时,我都需要调用一个特定的方法.我希望能够收到通用通知,而不必担心特别修改了哪个属性. 如果
简而言之,当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运行时工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读