我正在构建此应用,它需要将字符串转换为Int
。所以我这样做了:
Int(someString)
但是,有时someString
是一个非常大的数字。其值超过Int32
的最大值。我知道如果用户使用不同的操作系统,Int
的最大值可能会有所不同。
我使用iOS 9和iOS 8测试我的应用程序,它运行正常。这意味着Int
的最大值是2 64 - 1,而不是32位。但是其他iOS版本呢?如果Int
的最大值较小,我的应用会产生错误的输出!
我只是想问一下不同iOS版本中Int
的最大值是多少?哪个版本'(s)最大值是32位?
答案 0 :(得分:3)
在所有32位系统上Int为32位,在所有64位系统上为64位。通常,您将构建一个在所有处理器上运行的通用二进制文件,然后它取决于设备中的处理器。或者你只构建了32位(对于那些不再在App Store上被接受的iOS),它总是32位。
你可以在Swift中使用Int64,它总是64位。要计算应用程序中的内容,比如数组中有多少元素,您应该始终使用Int。对于代码之外的东西,如果+/- 20亿保证足够,则使用Int,如果+/- 8亿亿就足够,则使用Int64,如果这还不够,则会出现问题: - )
提前计划。例如,我相信Twitter最初认为32位足以对所有发送过的推文进行编号。它不是一段时间造成麻烦的。
答案 1 :(得分:1)
整数的大小取决于处理器体系结构,而不是操作系统。您可以使用条件编译来确定您当前正在运行的内容。例如:
#if arch(arm64)
// 64-bit
#end
文档here(在“构建配置”下)显示了您可以测试的内容。您还可以使用os()来确定操作系统。
请注意,由于某些原因,我的笔记本电脑上的模拟器将iPad Retina作为32位运行,即使实际设备是64位。