當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。