NSArray类的“sortedArrayHint”方法,这个方法的目的是什么,如何使用?

5

问题与标题相同。NSArray类的"sortedArrayHint"方法,此方法的目的是什么,如何使用?

我已经阅读了文档,但解释不清楚。

请解释该方法的用途及其用法。

1个回答

10
这个想法很简单。假设你有一个总是排序的大型数组。即使更改或插入一个元素,也必须重新对数组进行排序。排序是代价高昂的。
方法-[NSArray sortedArrayHint]可以在已排序的数组上调用,以获取可用于加速对同一数组进行排序的私有内部数据,只要进行了小的更改即可。
使用方法很简单:
  1. 使用-[NSArray sortedArrayHint]从原始排序数组中获取并存储提示。
  2. 进行小幅更改后,使用存储的提示使用-[NSArray sortedArrayUsingFunction:context:hint:]重新排序。
  3. 进行大幅更改后,使用-[NSArray sortedArrayUsingFunction:context:]重新排序,并获取新提示。
什么是小变化或大变化,这是您必须使用Instruments测量的内容。
我自己从未使用过这种方法,因为我发现使用我自己在NSArrayNSMutabelArray上的排序插入的类别更有效,这些类别使用二进制搜索来对排序数组进行操作。我的代码可在此处作为开源软件获得:https://github.com/Jayway/CWFoundation

你的回答对我非常有帮助。 - S.J. Lim
使用“sortedArrayHint”的原因是为了加快速度吗? - S.J. Lim
1
@user868754 - 是的,正如文档清楚地说明的那样,这是出于性能考虑。我不会也不想为你编写代码。这只涉及两个方法调用,Xcode将为您提供完整的代码自动补全。如果这对您来说是个问题,那么我给您一个片段来复制和粘贴只会对您造成不便。 - PeyloW
从苹果的文档中有一个重要的警告:[sortedArrayHint]假设数组中的项目实现了一个 -hash 方法...并且哈希函数是一个“好”的哈希函数。 - smileyborg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接