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

Chr*_*ina 32 iphone xcode objective-c max nsstring

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

这会动态变化吗?

Spe*_*esk 62

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

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

  • 我给了+1.然而,这是有缺陷的,因为它假设1个字符= 1个字节. (3认同)
  • @pst:`NSString`s名义上将他们的角色存储为`unichar`s,这是两个字节; 但是,如果所有字符都以纯ASCII表示,他们将尝试通过每个字符仅使用一个字节来节省内存 - 请参阅[String Storage](http://developer.apple.com/library/mac/documentation/CoreFoundation /Conceptual/CFStrings/Articles/StringStorage.html#//apple_ref/doc/uid/20001179-CJBEJBHH) (3认同)

ser*_*gio 8

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

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

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