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

标签 swift option-type

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/

相关文章:

Swift 如何将 Parse createdAt 时间转换为时间前?

ios - 将 Unix(纪元)时间转换为本地时间

java - 'Optional.get()' without ' isPresent()'检查

swift - 为什么隐式展开的可选值会复制为可选值?

swift - 书籍(Swift for Dummies)第 4 章练习 : fatal error: unexpectedly found nil while unwrapping an Optional value

ios - 单元格高度 : Thread 1: Fatal error: Index out of range when pulling up data in UITableView

ios - 以编程方式将 UITableViewCells 固定到所有侧面

ios - 如何将具有多个输出的函数的输出分配给 Swift 中的不同变量?

java - Maybes 是 Scala 的好模式吗?

java - 使用@Builder 的 lombok 中可选数据成员的默认值是什么?