Instance MethodSwift

    withUnsafeMutableBytes(_:)

    Calls the given closure with a pointer to the underlying bytes of the array’s mutable contiguous storage.

    mutating func withUnsafeMutableBytes<R>(_ body: (UnsafeMutableRawBufferPointer) throws -> R) rethrows -> R

    Parameters

    body

    A closure with an UnsafeMutableRawBufferPointer parameter that points to the contiguous storage for the array. If no such storage exists, it is created. If body has a return value, that value is also used as the return value for the withUnsafeMutableBytes(_:) method. The argument is valid only for the duration of the closure’s execution.

    Returns

    The return value, if any, of the body closure parameter.

    Overview

    The array’s Element type must be a trivial type, which can be copied with just a bit-for-bit copy without any indirection or reference-counting operations. Generally, native Swift types that do not contain strong or weak references are trivial, as are imported C structs and enums.

    The following example copies bytes from the byteValues array into numbers, an array of Int32:

    var numbers: [Int32] = [0, 0]
    var byteValues: [UInt8] = [0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00]
    
    numbers.withUnsafeMutableBytes { destBytes in
        byteValues.withUnsafeBytes { srcBytes in
            destBytes.copyBytes(from: srcBytes)
        }
    }
    // numbers == [1, 2]

    The pointer passed as an argument to body is valid only for the lifetime of the closure. Do not escape it from the closure for later use.