
事实证明,当您尝试向其添加观察者时,NSSet将引发异常.毫不奇怪,因为可能没有可以观察到的命名keyPath. The documentation非常清楚异常,但我不明白建议的解决方法:
Instead of observing a set,observe the unordered to-many relationship for which the set is the collection of related objects.
有人可以重申这意味着什么吗?那么解决方法会是什么样子?
解决方法 这是一种非常密集的说法“不要向集合本身添加观察者,将观察者添加到包含集合的类”:[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:;您可能会发现它们比通用的“价值变化”方法更适合您.
所有这一切,我相信你在第一段提到的解决方案,以及Girish问题中的outlined by Peter Hosey,可能是最好的方法.
总结以上是内存溢出为你收集整理的objective-c – 键值观察NSMutableSet全部内容,希望文章能够帮你解决objective-c – 键值观察NSMutableSet所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)