我有一个应用程序,利用单个字符串。该字符串包含从数组加载的数据,然后将该字符串导出到文本文件。在Swift 2.0中,字符串的最大长度是多少?
我的问题是这个字符串最长的可能长度是什么,它什么时候变成一个问题,它变得太长了?
我有一个应用程序,利用单个字符串。该字符串包含从数组加载的数据,然后将该字符串导出到文本文件。在Swift 2.0中,字符串的最大长度是多少?
我的问题是这个字符串最长的可能长度是什么,它什么时候变成一个问题,它变得太长了?
继official Apple documentation:
字符串桥接到目标C为的NSString,和一个字符串, 起源在Objective-C可以存储在一个NSString其字符。
由于所有设备都能够运行iOS,因此都是32位,这意味着NSUIntegerMax
是2^32。
根据Swift opensource GitHub repo它的值似乎是2^64 = 18,446,744,073,709,551,615;十六进制0xFFFFFFFFFFFFFFFF为64台设备,以下的代码:
#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
...
TEST:(在iPhone 6)
String
桥接到目标C作为NSString
和String
起源在Objective-C可以存储在一个 NSString
其字符。由于NSString
的任意子类可以变为String
,所以在这种情况下不存在关于表示或效率的保证。
NSString
对象的最大长度是多少?
NSString
的硬限制为NSUIntegerMax
个字符。 NSUIntegerMax
是2^32 - 1和NSString
可以容纳超过42亿字符。
根据意见: 对于iPhone 5S及以上版本,因为它们是64位。它的2 ^(64 - 1)
Whait是什么?它是iPhone 5S上的64位! – 123FLO321
当然,你有理由,我忘了NSUInteger转换为32位的int和长到64位,好的答案更新。 –