ios – 为什么NSMutableSet不会删除其中包含的对象?

ios – 为什么NSMutableSet不会删除其中包含的对象?,第1张

概述我有一个NSMutableSet集,其中包含作为SKNode的子类的自定义对象.我正在制作一个游戏,在这个游戏中添加这些对象并从NSMutableSet中删除.我正在添加和删除主线程,因此线程不是问题.由于某种原因,有时不会删除对象,因为找不到它.以下方法返回NO: [self.set containsObject:object] 我查看了这个问题并打印了对象的地址和哈希值以及NSMutableS 我有一个NSMutableSet集,其中包含作为SKNode的子类的自定义对象.我正在制作一个游戏,在这个游戏中添加这些对象并从NSMutableSet中删除.我正在添加和删除主线程,因此线程不是问题.由于某种原因,有时不会删除对象,因为找不到它.以下方法返回NO:

[self.set containsObject:object]

我查看了这个问题并打印了对象的地址和哈希值以及NSMutableSet中的所有对象,并且确定它出现在集合中.

如果地址和哈希值相等,那么找不到对象的原因是什么?我知道containsObject方法使用isEqual来比较这两个值.

解决方法 哈希的结果必须相等,并且isEqual:的结果必须为YES.仅仅匹配哈希是不够的.你检查过isEqual:?默认值为IsEqual:比较对象标识,而不是哈希.集合允许使用哈希来加速比较,但它只是一种优化.如果两个对象为isEqual返回YES:它们也必须返回相同的哈希值,但反之则不然. 总结

以上是内存溢出为你收集整理的ios – 为什么NSMutableSet不会删除其中包含的对象?全部内容,希望文章能够帮你解决ios – 为什么NSMutableSet不会删除其中包含的对象?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1014186.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存