首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSMutableSet addObject

NSMutableSet addObject
EN

Stack Overflow用户
提问于 2010-10-18 06:14:17
回答 1查看 4K关注 0票数 4

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

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

三部分问题:

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-18 06:20:24

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

就性能而言,不要担心它,除非你真的把它作为一个问题来衡量。如果可以的话,我会非常惊讶,因为一个集合(至少,一个集合的智能实现)有O(1)查找时间(平均情况)。我向您保证,NSSet和朋友都是智能实现。:)

根据我收集到的关于NSSet实现的内容,如果您使用containsObject:addObject:,它将调用对象上的-hash作为将它们“分组”的方法。如果使用containsObjectIdenticalTo:,它仍然会使用-hash缩小搜索过程,然后(本质上)进行指针比较以找到相同的对象。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3956929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档