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字节的内存大小答案 0 :(得分:1)
在引擎盖下,可选的是枚举,看起来像这样:
enum Optional<Wrapped> {
case some(Wrapped) // not nil
case none // nil
}
符号?
和!
只是引用此可选枚举的缩写。这个额外的层使它大2字节。
但是,如果打开可选项,返回的值就是包装值本身,因此它变为1个字节。