¿Cuál es la mayor cantidad de objetos que puedo poner en mi NSArray?Cantidad máxima de objetos en NSArray
Respuesta
El método NSArray initWithCapacity toma un int sin signo como argumento. Entonces, cualquiera que sea el valor máximo de una int sin firmar en su plataforma, puede ser el límite teórico. Sin embargo, es más probable que el límite real dependa de la cantidad de memoria que tenga disponible.
Probablemente más que la memoria RAM puede manejar.
NSArray es un contenedor de punteros a otros objetos. Su capacidad máxima se define por NSUInteger (en las últimas versiones de los sistemas operativos disponibles):
Cuando la construcción de aplicaciones de 32 bits, NSUInteger es un 32 bits sin signo entero. Una aplicación de 64 bits trata NSUInteger como 64 bits sin signo número entero
Por lo tanto, cualquiera que sea el tamaño de NSUInteger está en un dispositivo dado es el número máximo de punteros de objeto que puede contener. Sin embargo, como aludió Eimantas en su respuesta, esto no es lo mismo que "cuántos objetos puede contener" porque esto depende de la memoria disponible. Puede que no tenga suficiente memoria RAM disponible en un momento dado para asignar una matriz con seis mil millones de ranuras por ejemplo ...
En la mayoría de los casos relativos a los límites superiores de las estructuras de programación y similares:
"Si usted tiene que preguntar , probablemente lo estés haciendo mal "- TheDailyWTF.com
¿Has intentado averiguarlo? ;)
NSMutableArray * a = [[NSMutableArray alloc] init];
NSUInteger i = 0;
@try {
while (1) {
[a addObject:@"hi"];
i++;
}
} @catch (NSException * e) {
NSLog(@"added %llu elements", i);
}
Delong mientras estoy tratando su idea y averiguar límite de tamaño , esa aplicación se bloquea y recibe un error como señal de programa recibida: "0". Los formateadores de datos temporalmente no disponibles, se volverán a intentar después de un 'continuar'.(Error desconocido al cargar la biblioteca compartida "/Developer/usr/lib/libXcodeDebuggerSupport.dylib") –
se ha quedado sin memoria. simplemente registra lo que soy en cada iteración y deja que se cuelgue, el último registro te dirá cuántos puedes obtener. Por cierto, tu prueba te dice que el tamaño solo está limitado a la memoria. –
NSNotFound se define como NSIntegerMax cambios (este valor si usted está en un sistema de 32 bits o 64 bits)
NSNotFound es también el resultado que se obtiene cuando se hace una
[indexOfObject NSArray: obj]
y no se encuentra ningún objeto.
Si no se queda sin espacio/memoria, yo diría que este sería su límite.
- 1. Validar máxima cantidad af objetos asociados
- 2. ¿NSArray copia objetos?
- 3. Obtiene la cantidad de desplazamiento HorizontalScrollView máxima
- 4. NSArray de objetos y Casting
- 5. NSArray lleno de objetos bool
- 6. Buscando NSArray de objetos NSDictionary
- 7. ¿Cómo contar la cantidad de elementos en un NSArray?
- 8. Anidamiento de la cantidad máxima de formas en una superficie
- 9. Ordenar NSArray con la costumbre objetos
- 10. ¿Cómo aumentar la cantidad máxima de llamadas en Javascript?
- 11. extrayendo propiedades de NSArray de los objetos
- 12. Filtrado NSArray de objetos NSDictionary utilizando NSPredicate
- 13. Cantidad máxima de caracteres de TextBox (no es MaxLength)
- 14. ¿Cuál es la cantidad máxima de archivos por jarra?
- 15. Filtrar una NSArray que contiene objetos personalizados
- 16. objetos Restar en uno NSArray de otra matriz
- 17. NSArray independiente a una lista de objetos de tipo NSString
- 18. ¿La mejor manera de ordenar un NSArray de objetos NSDictionary?
- 19. Convertir NSArray en NSDictionary
- 20. ¿Cómo ordenar NSArray con objetos de diccionario alfabéticamente?
- 21. Ordenar NSArray de objetos personalizados por sus propiedades NSDate
- 22. Obtiene n objetos aleatorios (por ejemplo 4) de nsarray
- 23. NSArray en orden descendente
- 24. En un tipo de cambio de divisa, ¿cuál es la cantidad máxima de decimales utilizada?
- 25. Cómo usar NSArray del objeto NSArray en el objetivo c?
- 26. NSIndexSet de NSArray
- 27. ¿Cuál es la cantidad máxima de argumentos en una función de Python?
- 28. ¿Cuál es la cantidad máxima de espacios de claves en Cassandra?
- 29. Cómo establecer la cantidad máxima de elementos para mostrar en un cuadro de selección HTML
- 30. Obtener un NSArray de un solo atributo de un NSArray
'NSUInteger', no' int' sin firmar. En arquitecturas de 64 bits, 'int' sin signo es todavía 4 bytes, mientras que' NSUInteger'-que es el que utiliza NSArray desde Leopard-es 8. –
No es correcto asumir que el número máximo de objetos NSUIntegerMax. Como jsmp señala, NSArray usa NSNotFound. NSNotFound se define como NSIntegerMax que es menor que NSUInteger. Esto implica que la cantidad máxima de objetos es NSIntegerMax-1. ¡Lo probaría como sugiere Dave Delong, pero me agoto la memoria! –
Espero que tengas suficiente memoria RAM para almacenar 180 veces más información que Lt. Cmd. ¡Datos! http://www.wolframalpha.com/input/?dataset=&i=(1*(2%5E64)+%2B+8+%2B+8)+bytes –