首页 文章

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

提问于
浏览
31

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

这会动态变化吗?

3 回答

  • 61

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

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

  • 8

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

    至于 NSString 实际使用了哪个后备存储,这是Apple未记录的实现细节,它可能随时更改 .

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

  • 3

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

相关问题