【发布时间】:2015-02-10 22:55:18
【问题描述】:
在Core Data 中,您可以存储Int16、Int32、Int64,但它与Int 不同。它们存在的原因是什么,你是如何使用它们的?
【问题讨论】:
-
Int就像 C 的int:它应该反映原生字长(32 位或 64 位)。但是,Int32(显然)总是 32 位宽。 -
@TheParamagneticCroissant: C 的
int在所有 当前的 OS X 和 iOS 架构(甚至在 64 位设备上)以及实际上在我所知道的所有当前 Unix 架构上都是 32 位的. Swift 的Int就像 Objective-C 的NSInteger是 32 位或 64 位。 -
@MartinR 抱歉,如果我不清楚,但我并不是要在任何地方断言 C 的
int是 在 64 位平台上是 64 位的。我要说的是它被设计为用作字大小的整数。大多数现代实现不尊重这种意图的事实是可悲但无关紧要的。当心我评论中的“应该”这个词。我还使用了“like”(而不是“as”),因为我知道它们的实际行为只是相似的,而不是相同的。这只是两种数据类型共享的依赖于平台的整数大小的一般概念,而不是实际的实现细节。 -
我的应用程序的基本部署目标是 iOS 11,意味着 int == int64。所以实际上我只使用(并且使用)一种类型,即int。我看不出在这里使用 int16 或 int32 的任何理由或好处。