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

Big*_*tor 3 string maxlength string-length ios swift

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

我的问题是这个字符串可能的最长长度是什么,它什么时候变得太长了?

Ale*_*ano 6

遵循Apple官方文档:

String作为NSString桥接到Objective-C,而起源于Objective-C的String可以将其字符存储在NSString中.

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

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

#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
...
Run Code Online (Sandbox Code Playgroud)

测试 :(在iPhone 6上)

在此输入图像描述


phn*_*mnn 5

String被桥接到Objective-C as NSStringString 起源于Objective-C的a可以将它的字符存储在一个 NSString. 由于 的任意子类都NSString可以成为 a String,因此在这种情况下不能保证表示或效率。

NSString物体的最大长度是多少?

的硬限制NSStringNSUIntegerMax字符。NSUIntegerMax是 2^32 - 1 并且NSString可以容纳超过 42 亿个字符。

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

  • iPhone 5S 及以上版本为 2^(64 - 1),因为它们是 64 位。只需在我的 6S 和 4S 上进行测试。 (2认同)