整数类型可以有符号(负数和正数)或无符号(只有正数)。互联网上有很多关于整数类型的文档,您应该阅读它。
无符号整数通常用于存储计数器,因为它们总是正数。
Swift 中的等价物unsigned int是UInt.
正确的方法是:
struct DelegateFlags {
var didDoneClicked: UInt
var didCancelClicked: UInt
}
请注意,您应该var在 Swift 中使用关键字。此外,如果你想匹配Swift 风格指南,你应该去掉大写首字母的下划线。
笔记
这个结构看起来像一个 C 位字段,用于以内存有效的方式存储布尔值,通过将信息存储在 1 位而不是 8 位上。
如果要匹配确切的 C 内存模式,Swift 方法是:
struct DelegateFlags: OptionSet {
var rawValue: UInt
static let didDoneClicked = DelegateFlags(rawValue: 1 << 0)
static let didCancelClicked = DelegateFlags(rawValue: 1 << 1)
}
但是,如果您需要一个比我介绍的第一个更简单的结构,内存效率更高,这里有一个替代方案:
struct DelegateFlags {
var didDoneClicked: Bool
var didCancelClicked: Bool
}
第一个结构是 16 字节,第二个是 8 字节(虽然可以做成 1 字节UInt8),最后一个是 2 字节。随着案例数量的增加,第二个将是最有效的(内存比最后一个少 8 倍,比第一个少 64 倍)。