NSString对象的最大长度是多少?

时间:2011-06-26 07:12:41

标签: iphone objective-c xcode nsstring max

NSString对象中可以保存的最大字符串数是多少?

这会动态变化吗?

3 个答案:

答案 0 :(得分:62)

我认为NSString的硬限制是NSUIntegerMax字符,因为NSString的索引和与大小相关的方法返回NSUInteger。由于目前能够运行iOS的所有设备都是32位,这意味着NSUIntegerMax为2 ^ 32 - 1,NSString可以容纳超过42亿个字符。

正如其他人所指出的那样,实际限制要小得多 - 特别是在iOS设备上,在你达到NSString中的任何硬限制之前很久就会耗尽内存。

答案 1 :(得分:8)

NSString实际上是一个类集群,因此很有可能不同的具体类(比如NSStringNSMutableString)将使我们成为不同的“后备存储”存储数据。您甚至可以将NSString子类化并提供自己的后备存储实现,以满足您的特定需求(查看"Subclassing Notes" for NSString)。

关于NSString实际使用哪个后备存储,这是Apple未记录的实现细节,并且可能随时更改。

对于我自己,我假设NSString的最大长度仅受可用内存的限制。实际上,由于可用内存可能非常庞大,因此会有一些其他限制(可能是与性能相关的限制),但我从未发生过如此限制。

答案 2 :(得分:3)

它可以容纳几乎与虚拟内存系统一样多的内存。但我个人认为最大长度仅限于当时的可用内存。