¿Cuál es la longitud máxima de un objeto NSString?

¿Cuál es la cadena de tamaño máximo que se puede mantener en un objeto NSString?

¿Esto cambia dinámicamente?

Asumiría que el límite estricto para NSString serían los caracteres NSUIntegerMax, ya que los métodos relacionados con el índice y el tamaño de NSString devuelven un NSUInteger. Como todos los dispositivos actualmente capaces de ejecutar iOS son de 32 bits, esto significa que NSUIntegerMax es 2 ^ 32 – 1 y NSString puede contener algo más de 4,2 mil millones de caracteres.

Sin embargo, como han señalado otros, el límite práctico es mucho más pequeño: en un dispositivo iOS, especialmente, se quedará sin memoria mucho antes de que llegue a un límite estricto en NSString.

NSString es en realidad un clúster de clases, por lo que es muy posible que diferentes clases concretas (por ejemplo, NSString vs. NSMutableString ) nos hagan de diferentes “backing stores” para almacenar los datos. Incluso podría NSString subclase de NSString y proporcionar su propia implementación de la tienda de respaldo, para las necesidades específicas que pueda tener (consulte “Subclassing Notes” para NSString ).

En cuanto a qué tienda de respaldo realmente usa NSString , se trata de un detalle de implementación que no está documentado por Apple, y podría cambiar en cualquier momento.

Para mí, supongo que la longitud máxima de un NSString solo está limitada por la memoria disponible. En realidad, dado que la memoria disponible puede ser muy grande, habrá algún otro límite (tal vez relacionado con el rendimiento), pero nunca he incurrido en tal límite.

Puede contener casi tanta memoria como pueda representarse mediante el sistema de memoria virtual. Pero personalmente siento que la duración máxima solo se limita a la memoria disponible en ese momento.