2011-08-11 7 views

Respuesta

16

Es necesario comprender que en las clases de fundación como NSArray, etc, no es lo que ha aprendido como una matriz, etc en su clase de programación que comienza. En particular, no tiene las características de rendimiento que normalmente asociaría a una matriz.

En este punto, hay muchas buenas publicaciones en el blog, p. uno por Ridiculous Fish y otro por Cocoa with Love

Por lo tanto, como todos los demás dijeron, simplemente use NSMutableArray.

+0

Para colecciones grandes, las matrices tienen un rendimiento de inserción/eliminación terrible – jjxtra

+10

Sí, pero 'NSMutableArray' no es una matriz. – Yuji

+0

D'oh! Eso lo explica. – sudo

12

NSMutableArray es lo más cercano a esto. A pesar del nombre, está más cerca de una lista que una matriz. Sin embargo, "agregar y quitar elementos de cualquiera de los extremos toma tiempo constante", según this.

Además, ¿qué pasa con esto, una aplicación de terceros: https://github.com/mschettler/NSLinkedList

+6

+1 'NSArray' tiene una * tonelada * de optimizaciones bajo el capó, y usar la solución integrada siempre es la mejor opción. Como la adición a cada extremo es una operación de tiempo constante, la necesidad de una lista vinculada real es negada, ya que 'NSArray' ya tiene las características de rendimiento deseadas. –

+0

¿Tiene alguna fuente para agregar y eliminar características de rendimiento? Ctrl + F no aparece con la línea que cita en la documentación. – Joren

+0

Ah, lo siento, es de una página diferente :) –

4

No hay un equivalente directo. Escribir una lista vinculada usted mismo es bastante fácil, pero dudo que gane mucho rendimiento en comparación con NSMutableArray.

Hay un par de implementaciones de listas enlazadas diferentes en el código abierto CHDataStructures.

1

NSMutableArray es un vector o matriz dinámica pero no es una lista vinculada.

+0

si NSMutableArray es un vector o matriz dinámica. ¿Cuál sería y equivalente a la lista enlazada en Objective-c? – user2924482

Cuestiones relacionadas