NSString对象中可以保存的最大字符串数是多少?
这会动态变化吗?
答案 0 :(得分:62)
我认为NSString的硬限制是NSUIntegerMax字符,因为NSString的索引和与大小相关的方法返回NSUInteger。由于目前能够运行iOS的所有设备都是32位,这意味着NSUIntegerMax为2 ^ 32 - 1,NSString可以容纳超过42亿个字符。
正如其他人所指出的那样,实际限制要小得多 - 特别是在iOS设备上,在你达到NSString中的任何硬限制之前很久就会耗尽内存。
答案 1 :(得分:8)
NSString
实际上是一个类集群,因此很有可能不同的具体类(比如NSString
与NSMutableString
)将使我们成为不同的“后备存储”存储数据。您甚至可以将NSString
子类化并提供自己的后备存储实现,以满足您的特定需求(查看"Subclassing Notes" for NSString)。
关于NSString
实际使用哪个后备存储,这是Apple未记录的实现细节,并且可能随时更改。
对于我自己,我假设NSString
的最大长度仅受可用内存的限制。实际上,由于可用内存可能非常庞大,因此会有一些其他限制(可能是与性能相关的限制),但我从未发生过如此限制。
答案 2 :(得分:3)
它可以容纳几乎与虚拟内存系统一样多的内存。但我个人认为最大长度仅限于当时的可用内存。