当前位置:  开发笔记 > 运维 > 正文

NSSet实现

如何解决《NSSet实现》经验,为你挑选了1个好方法。

这个问题只是出于好奇,但NSSet是如何实现的?它背后是什么数据结构以及添加和删除元素的访问时间是多少?如果我不得不猜测,我会说它是某种哈希表/字典数据结构,但在这种情况下为什么要区分NSSet和NSMutableSet?



1> Josh Caswell..:

好吧,正如Bavarious在评论中指出的那样,Apple的实际CoreFoundation源代码是开放的,也可供您阅读.NSSet是在哈希表模板上CFSet生成代码(用于生成代码CFDictionary),CFBasicHash用于完成工作.

可变性和不变性之间的区别似乎是结构中的一个标志问题(第91行CFBasicHash.h),从我的阅读到目前为止只影响对函数的调用,如CFBasicHashAddValue; 有一个简单的检查可变性.然而,似乎Cobbal对于两者之间的复制/保留行为是正确的(我还没有看到那么远).


以前:当我想知道实现细节时,我发现偶尔会仔细阅读GNUstep资源,这很有趣.当然,它们并不能保证以Apple的方式实现,但在某些情况下它们可能会有所帮助.他们的基金会版本:http://gnu.ethz.ch/debian/gnustep/gnustep-base-1.20.0/Headers/Foundation/(我希望这是最新的版本.如果没有,有人请指正.)


构建Foundation集合的Core Foundation集合是[开源](http://opensource.apple.com/source/CF/CF-550.42/).CFSet.c是从哈希表模板生成的.集似乎是作为哈希实现的.
推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有