NSIndexSetとNSSetの違いは何ですか?

私はCocoaに少し新しく、 NSIndexSet について読んでいました。それはなぜ必要なのですか? NSIndexSet は整数の NSSet 以外の何ものでもないようです。別のコレクションを作成する目的は何ですか?

7

1 答え

いくつかの理由があります:

  1. NSIndexSet stores unsigned integer primitive types, whereas NSSet stores objects.
  2. NSIndexSet is optimized for storing unsigned integers, specifically a set of integers into another data structure like an NSArray.
12
追加された
とった。私が気づいたもう一つのこと。 NSIndexSetは実際にNSRangeを使用して連続したインデックスを格納します。インデックス値を他のコレクションに格納するために非常に最適化されています。
追加された 著者 Tony,
#2について詳述するために、NSIndexSetを使用すると、インデックスを順番に、または逆の順序で繰り返すことができます。 NSSetは順序付けされておらず、NSOrderedSetは手動で順序付けされます(間違った位置にオブジェクトを挿入することで順序を破ることができます)。
追加された 著者 Peter Hosey,
NSSet の操作はO(1)(ハッシュ)ですが、N @ ndexSet 操作のほとんどはO(N)(ルーピング)です。
追加された 著者 alex-i,