当前位置 : 主页 > 手机开发 > ios >

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

来源:互联网 收集:自由互联 发布时间:2021-06-11
我有一个NSMutableSet集,其中包含作为SKNode的子类的自定义对象.我正在制作一个游戏,在这个游戏中添加这些对象并从NSMutableSet中删除.我正在添加和删除主线程,因此线程不是问题.由于某种
我有一个NSMutableSet集,其中包含作为SKNode的子类的自定义对象.我正在制作一个游戏,在这个游戏中添加这些对象并从NSMutableSet中删除.我正在添加和删除主线程,因此线程不是问题.由于某种原因,有时不会删除对象,因为找不到它.以下方法返回NO:

[self.set containsObject:object]

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

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

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