在 Swift 2.0 中,字符串的最大长度是多少?

In Swift 2.0 what is the maximum length of a string?

我有一个使用单个字符串的应用程序。此字符串包含从数组加载的数据,然后将字符串导出到文本文件。

我的问题是这个字符串的最长可能长度是多少,什么时候变得太长会成为问题?

String 作为 NSString 桥接到 Objective-C,并且 String 起源于 Objective-C 的可能会将其字符存储在 NSString。由于 NSString 的任意子类都可以 成为 String,不保证代表或 这种情况下的效率。

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

NSString 的硬性限制为 NSUIntegerMax 个字符。 NSUIntegerMax 是 2^32 - 1,NSString 可以容纳 42 亿多一点的字符。

根据评论: 对于 iPhone 5S 及更高版本,因为它们是 64 位。是 2^(64 - 1)

official Apple documentation之后:

String is bridged to Objective-C as NSString, and a String that originated in Objective-C may store its characters in an NSString.

由于所有设备都能够 运行 iOS 是 32 位的,这意味着 NSUIntegerMax 是 2^32。

根据Swift opensource GitHub repo,它的值似乎是 2^64 = 18,446,744,073,709,551,615 ; 64 位设备的十六进制 0xFFFFFFFFFFFFFFFF,遵循以下代码:

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif

// + (instancetype)
    //     stringWithCharacters:(const unichar *)chars length:(NSUInteger)length
...
maxLength:(NSUInteger)maxBufferCount
...

测试:(iPhone 6)