gpt4 book ai didi

objective-c - NSMutableSet 添加对象

转载 作者:太空狗 更新时间:2023-10-30 04:00:42 25 4
gpt4 key购买 nike

我有一个环绕 NSMutableSet 对象的类,我有一个实例方法将对象(使用 addObject: 方法)添加到 NSMutableSet

这很好用,但我闻到了性能问题,因为在方法中我在将对象添加到集合之前显式调用了 containsObject:

三部分问题:

  1. 在将对象添加到集合之前是否需要调用 containsObject:
  2. 如果是这样,那么我应该使用什么实际方法,containsObjectcontainsObjectIdenticalTo:
  3. 如果不是这样,在 addObject: 的幕后会调用什么 contains 方法?这对我很重要,因为如果我将一个对象传递给 containsObject:,它会返回 true,但如果我将它传递给 containsObjectIdenticalTo:,它会返回 false。

最佳答案

如果您要包装一个 NSMutableSet,则不需要调用 containsObject:,因为一个集合 (by definition) 不包含重复项。因此,如果您尝试插入一个已经在集合中的对象,则不会发生任何事情。

就性能影响而言,不要担心,除非您实际衡量它是一个问题。如果你能做到,我会非常非常非常惊讶,因为一个集合(至少,一个集合的智能实现)具有 O(1) 查找时间(平均情况)。我向你保证 NSSet 和它的 friend 们是聪明的实现。 :)

根据我收集到的关于 NSSet 实现的信息,如果您使用 containsObject:addObject:。如果您使用 containsObjectIdenticalTo:,它仍会使用 -hash 来缩小搜索过程,然后(实质上)进行指针比较以找到相同的对象。

关于objective-c - NSMutableSet 添加对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3956929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com