枚舉
Memory
MemoryLayout
類型的內存布局,說明其大小、步幅和對齊方式。
聲明
@frozen enum MemoryLayout<T>
概述
在使用原始指針分配或綁定內存時,您可以使用MemoryLayout
作為類型信息的來源。下麵的示例聲明了一個帶有 x
和 y
坐標以及布爾值 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+
相關用法
- Swift MemoryLayout alignment(ofValue:)用法及代碼示例
- Swift MemoryLayout stride(ofValue:)用法及代碼示例
- Swift MemoryLayout offset(of:)用法及代碼示例
- Swift MemoryLayout size(ofValue:)用法及代碼示例
- Swift MutableCollection partition(by:)用法及代碼示例
- Swift Mirror description用法及代碼示例
- Swift MutableCollection subscript(_:)用法及代碼示例
- Swift MutableCollection sort(by:)用法及代碼示例
- Swift Mirror.Children用法及代碼示例
- Swift Mirror.AncestorRepresentation.customized(_:)用法及代碼示例
- Swift ManagedBufferPointer用法及代碼示例
- Swift MutableCollection shuffle()用法及代碼示例
- Swift MutableCollection用法及代碼示例
- Swift MutableCollection reverse()用法及代碼示例
- Swift Mirror descendant(_:_:)用法及代碼示例
- Swift MutableCollection sort()用法及代碼示例
- Swift Mirror用法及代碼示例
- Swift MutableCollection shuffle(using:)用法及代碼示例
- Swift KeyValuePairs flatMap(_:)用法及代碼示例
- Swift String.UTF8View first用法及代碼示例
- Swift Result.Publisher zip(_:_:_:)用法及代碼示例
- Swift Optional.Publisher reduce(_:_:)用法及代碼示例
- Swift Int8 ~(_:)用法及代碼示例
- Swift SetAlgebra isStrictSubset(of:)用法及代碼示例
- Swift UInt +(_:)用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 MemoryLayout。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。