C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了objective-c – 键值观察NSMutableSet大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在普通类中,我有一个NSMutableSet属性.每当在集合中添加删除对象时,我都想执行一些自定义代码.我知道我可以在类中编写一些addObjectToSet:类似的方法,但我想知道是否有一个更优雅的解决方案,在集合上直接使用KVO.

事实证明,当您尝试向其添加观察者时,NSSet将引发异常.毫不奇怪,因为可能没有可以观察到的命名keyPath. The documentation非常清楚异常,但我不明白建议的解决方法

有人可以重申这意味着什么吗?那么解决方法会是什么样子?

解决方法

这是一种非常密集的说法“不要向集合本身添加观察者,将观察者添加到包含集合的类”:
[myObjWithASetAsIvar addObserver:self
                      forKeyPath:@"nameOfIvarHoldingtheset"
                         options:NSKeyValueObservingOptionNew
                         context:nil];

一个棘手的问题是,您需要将所有访问包装到集合中,以便发送正确的通知.在包含集合的类中:

[self willChangeValueForKey:@"nameOfIvarHoldingtheset"];
// Do something with the set
[self didChangeValueForKey:@"nameOfIvarHoldingtheset"];

还有两种专门针对集合的通知方法willChangeValueForKey:withSetMutation:usingObjects:didChangeValueForKey:withSetMutation:usingObjects:;您@R_31_9381@它们比通用的“价值变化”方法更适合您.

所有这一切,我相信你在第一段提到的解决方案,以及Girish问题中的outlined by Peter Hosey,可能是最好的方法.

大佬总结

以上是大佬教程为你收集整理的objective-c – 键值观察NSMutableSet全部内容,希望文章能够帮你解决objective-c – 键值观察NSMutableSet所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。