You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Swift中一个类型的每个成员/属性的MemoryLayout?

需求背景

我正在尝试构建一个自动合理性测试算法,当任意类型的MemoryLayout在特定场景下可能并非最优时,通过Swift Testing发出警告。

为此,我需要获取一个类型各成员的MemoryLayout;如果MemoryLayout<LessOptimal>.size返回10而非17,就能更方便地将其与stride对比来发出警告……但实际情况并非如此。

struct LessOptimal {
    var a: Bool
    var b: UInt
    var c: Bool
}
无效方案
  • “只要记住你使用的每个类型的大小就行!” • 如果只使用基础类型(Bool、UInt等),这或许有用……但实际并非如此。我想要实现自动预警,而非盲目信任写代码的人(不管是我自己还是其他人)
失败尝试

我多次尝试了Mirror/反射的不同变体:

1

Mirror(reflecting: LessOptimal()).children.forEach { child in
   let t = type(of: child.value)
   let layout = MemoryLayout<t>.self
   // … 无法运行!
}

2

Mirror(reflecting: LessOptimal()).children.forEach { child in
   print(MemoryLayout.size(ofValue: child.value))
   // 所有三个成员的Size都是32!
}

内容的提问来源于stack exchange,提问作者user1040049

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 18:04:55