当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift MemoryLayout用法及代码示例


枚举

MemoryLayout

类型的内存布局,说明其大小、步幅和对齐方式。

声明

@frozen enum MemoryLayout<T>

概述

在使用原始指针分配或绑定内存时,您可以使用MemoryLayout 作为类型信息的来源。下面的示例声明了一个带有 xy 坐标以及布尔值 isFilled 属性的 Point 类型。


struct Point {
    let x: Double
    let y: Double
    let isFilled: Bool
}

Point 类型的大小、步幅和对齐方式可作为 MemoryLayout<Point> 的静态属性访问。


// MemoryLayout<Point>.size == 17
// MemoryLayout<Point>.stride == 24
// MemoryLayout<Point>.alignment == 8

在分配内存或考虑内存中实例之间的距离时,始终使用类型的 stride 的倍数而不是其 size。此示例为 Point 的四个实例分配未初始化的原始内存空间。


let count = 4
let pointPointer = UnsafeMutableRawPointer.allocate(
        byteCount: count * MemoryLayout<Point>.stride,
        alignment: MemoryLayout<Point>.alignment)

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 MemoryLayout。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。