UInt8 内存大小为 1 个字节。但是当我把它设为可选值时,它给出了 2 个字节的大小。
var serail : UInt8? = 255
print(MemoryLayout.size(ofValue: serail)) // it gives 2 byte size.
var serail : UInt8 = 255
print(MemoryLayout.size(ofValue: serail)) // it gives 1 byte size.
如何为整数值获取恰好 1 字节的内存大小
最佳答案
在引擎盖下,一个可选的是一个枚举,看起来像这样:
enum Optional<Wrapped> {
case some(Wrapped) // not nil
case none // nil
}
符号 ?
和 !
只是引用这个可选枚举的简写。这个额外的层导致它有 2 个字节大。
但是,如果您解包可选值,则返回值是包装值本身,因此它变为 1 个字节。
关于swift - 可选的 UInt8?给出 2 字节内存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47130445/