2011-12-19 14 views
7

Soy un poco nuevo en Cocoa y estaba leyendo acerca de NSIndexSet. ¿Por qué es necesario? Me parece que NSIndexSet no es más que un NSSet de números enteros, ¿verdad? ¿Cuál es el propósito de crear una colección separada en conjunto?¿Cuál es la diferencia entre NSIndexSet y NSSet?

Respuesta

12

Hay un par de razones: enteros

  1. NSIndexSet tiendas sin signo tipos primitivos, mientras que NSSet almacena los objetos.
  2. NSIndexSet está optimizado para el almacenamiento de enteros sin signo, específicamente un conjunto de números enteros en otra estructura de datos como una NSArray.
+1

dar más detalles sobre nº 2, NSIndexSet le permite iterar a través de los índices en orden o en orden inverso. Un NSSet no está ordenado, y un NSOrderedSet se ordena manualmente (lo que significa que puede romper el orden insertando un objeto en la posición incorrecta). –

+0

Lo tengo. Otra cosa que acabo de notar. NSIndexSet realmente usa NSRange para almacenar índices consecutivos, de hecho muy optimizados para almacenar el valor del índice en otras colecciones. – Tony

+0

Las operaciones sobre 'NSSet' son O (1) (hashing), mientras que la mayoría de las operaciones' NSIndexSet' son O (N) (looping). –

Cuestiones relacionadas