在 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)
我有一个使用单个字符串的应用程序。此字符串包含从数组加载的数据,然后将字符串导出到文本文件。
我的问题是这个字符串的最长可能长度是多少,什么时候变得太长会成为问题?
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)