實例方法
initialize
initializeMemory(as:from:count:)
使用從給定指針開始的值初始化此指針引用的內存,將內存綁定到值的類型,並返回指向初始化內存的類型化指針。
聲明
@discardableResult func initializeMemory<T>(
as type: T.Type,
from source: UnsafePointer<T>,
count: Int
) -> UnsafeMutablePointer<T>
返回值
指向此原始指針引用的內存的類型化指針。
參數
type
將此內存綁定到的類型。
source
指向要複製的值的指針。
source..<(source + count)
區域中的內存必須初始化為類型T
,並且不能與目標區域重疊。count
要複製到內存中的
value
的副本數。count
不能為負數。
詳述
此指針引用的內存必須未初始化或初始化為普通類型,並且必須正確對齊才能訪問 T
。
下麵的示例分配足夠的原始內存來容納 Int8
的四個實例,然後使用 initializeMemory(as:from:count:)
方法初始化分配的內存。
let count = 4
let bytesPointer = UnsafeMutableRawPointer.allocate(
byteCount: count * MemoryLayout<Int8>.stride,
alignment: MemoryLayout<Int8>.alignment)
let values: [Int8] = [1, 2, 3, 4]
let int8Pointer = values.withUnsafeBufferPointer { buffer in
return bytesPointer.initializeMemory(as: Int8.self,
from: buffer.baseAddress!,
count: buffer.count)
}
// int8Pointer.pointee == 1
// (int8Pointer + 3).pointee == 4
// After using 'int8Pointer':
int8Pointer.deallocate()
在原始指針 p
上調用此方法後,從 p
開始並繼續到 p + count * MemoryLayout<T>.stride
的區域將綁定到類型 T
並初始化。如果T
是非平凡類型,您最終必須取消初始化或從該區域中的值移動以避免泄漏。 source..<(source + count)
區域中的實例不受影響。
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
相關用法
- Swift UnsafeMutableRawPointer initializeMemory(as:repeating:count:)用法及代碼示例
- Swift UnsafeMutableRawPointer ..<(_:_:)用法及代碼示例
- Swift UnsafeMutableRawPointer ...(_:_:)用法及代碼示例
- Swift UnsafeMutableRawPointer advanced(by:)用法及代碼示例
- Swift UnsafeMutableRawPointer ..<(_:)用法及代碼示例
- Swift UnsafeMutableRawPointer bindMemory(to:capacity:)用法及代碼示例
- Swift UnsafeMutableRawPointer storeBytes(of:toByteOffset:as:)用法及代碼示例
- Swift UnsafeMutableRawPointer ...(_:)用法及代碼示例
- Swift UnsafeMutableRawPointer withMemoryRebound(to:capacity:_:)用法及代碼示例
- Swift UnsafeMutableRawPointer用法及代碼示例
- Swift UnsafeMutableRawBufferPointer shuffle()用法及代碼示例
- Swift UnsafeMutableRawBufferPointer compactMap(_:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer contains(where:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer allSatisfy(_:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer map(_:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer starts(with:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer isEmpty用法及代碼示例
- Swift UnsafeMutableRawBufferPointer sorted()用法及代碼示例
- Swift UnsafeMutableRawBufferPointer indices用法及代碼示例
- Swift UnsafeMutableRawBufferPointer randomElement(using:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer reduce(_:_:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer split(maxSplits:omittingEmptySubsequences:whereSeparator:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer sort(by:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer lexicographicallyPrecedes(_:)用法及代碼示例
- Swift UnsafeMutableRawBufferPointer forEach(_:)用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 UnsafeMutableRawPointer initializeMemory(as:from:count:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。