objective-c - 在 CoreData 中,我们是否应该始终将 NSSet 转换为 NSArray 进行迭代?

标签 objective-c ios core-data

所以在我的核心数据关系中,我有一个对象与通过 NSSet 映射的其他对象有关系。当我得到我的主要对象时,我将想要遍历 NSSet。只是迭代,没什么特别的。

现在,根据这篇文章,NSArray 比 NSSet 快得多。 http://www.cocoawithlove.com/2008/08/nsarray-or-nsset-nsdictionary-or.html

我的 NSSet 永远不会那么大,所以我认为在这种情况下它并不重要。但是,我只是想知道一般情况下,将 NSSet 转换为 NSArray 以进行迭代的开销总体上是否仍然更快?

谢谢!

最佳答案

将 NSSet 转换为 NSArray 将需要对集合进行迭代,并为数组分配内存,因此除非您要重复迭代,否则仅对集合进行迭代会更快。

但在任何一种情况下,即使有相当大的集合,我们也可能在谈论纳秒。除非您分析了实际的性能问题并且数据告诉您这是一个问题,否则我真的不会担心它。

此外,您链接的性能数据仅适用于您自己创建的集合。当您从框架中取回一个集合时,它可以(在核心数据的情况下,将)返回一个具有自定义实现的集合,该自定义实现具有自己的性能特征。

关于objective-c - 在 CoreData 中,我们是否应该始终将 NSSet 转换为 NSArray 进行迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13707903/

相关文章:

ios - 在未安装的机器上运行 Cocoa Pods 应用程序

ios - 单元测试本地通知

ios - 是否可以发出不打开应用程序的推送通知

ios - NSFetchRequest 获取具有下一个最接近字符串属性的对象

ios - 在异步 iCloud 初始化期间未能完成商店设置

objective-c - 我将如何在 if 语句 OBJ C 中加载新的 View Controller

objective-c - 这两种 dealloc 方法有什么区别?

cocoa - NSOutlineView 和 NSTreeController 可以处理数千个对象吗?

objective-c - 将 NSWindow 放在前面但不放在焦点上

objective-c - 如何在 Objective-C/Iphone SDK 中定义返回字符串的函数