可选的UInt8?给出2字节的内存大小

时间:2017-11-06 05:43:23

标签: swift optional

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.

如何为Integer值

准确获得1字节的内存大小

1 个答案:

答案 0 :(得分:1)

在引擎盖下,可选的是枚举,看起来像这样:

enum Optional<Wrapped> {
    case some(Wrapped)  // not nil
    case none  // nil
}

符号?!只是引用此可选枚举的缩写。这个额外的层使它大2字节。

但是,如果打开可选项,返回的值就是包装值本身,因此它变为1个字节。