• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 将 KVO 与自定义键一起使用

[复制链接]
菜鸟教程小白 发表于 2022-12-12 22:11:59 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我很好奇,但是可以使用自定义键(和手动更改通知)来实现 KVO 吗?

例如,我可以这样注册吗:

[myObject addObserver:self forKeyPath"My custom string" options:0 context:nil];

并像这样发出更改通知:

[self willChangeValueForKey"My custom string"];
// do something
[self didChangeValueForKey"My custom string"];

我在一个小型测试应用程序中尝试了这个,它可以工作,但我很好奇是否有人使用过它或看到它的值(value)。



Best Answer-推荐答案


我同意,如果 key 与属性不对应,则不应使用 KVO。但是,应该注意的是,属性不需要实例变量甚至访问器。您可以完全使用符合 Key-Value-Coding 的方法来实现动态属性。不过,这样的属性只能使用 KVC 访问(例如 -valueForKey[Path]:-setValue:forKey[Path]:)。

例如,如果您实现 -valueForUndefinedKey:,您可以检查键,如果它与动态或虚拟属性的名称匹配(使用您想要的任何标准),您可以返回适当的值。同样,如果您实现 -setValue:forUndefinedKey:,您可以使该属性可写。

在这种情况下,您不必发出手动 KVO 更改通知。当你调用 -setValue:forKey[Path]: 时,KVC 会自动发出这些。但是,如果您更改了一些有效地更改属性值的内部状态,则您必须自己发出更改通知。

关于ios - 将 KVO 与自定义键一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23484355/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap