Generic Function

withUnsafePointer(to:_:)

Invokes the given closure with a pointer to the given argument.

Declaration

func withUnsafePointer<T, Result>(to value: T, _ body: (UnsafePointer<T>) throws -> Result) rethrows -> Result

Parameters

value

An instance to temporarily use via pointer.

body

A closure that takes a pointer to value as its sole argument. If the closure has a return value, that value is also used as the return value of the withUnsafePointer(to:_:) function. The pointer argument is valid only for the duration of the function’s execution. It is undefined behavior to try to mutate through the pointer argument by converting it to UnsafeMutablePointer or any other mutable pointer type. If you need to mutate the argument through the pointer, use withUnsafeMutablePointer(to:_:) instead.

Return Value

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

Discussion

The withUnsafePointer(to:_:) function is useful for calling Objective-C APIs that take in parameters by const pointer.

The pointer argument to body is valid only during the execution of withUnsafePointer(to:_:). Do not store or return the pointer for later use.

See Also

Memory Access

func withUnsafePointer<T, Result>(to: inout T, (UnsafePointer<T>) -> Result) -> Result

Invokes the given closure with a pointer to the given argument.

func withUnsafeMutablePointer<T, Result>(to: inout T, (UnsafeMutablePointer<T>) -> Result) -> Result

Calls the given closure with a mutable pointer to the given argument.

func withUnsafeBytes<T, Result>(of: T, (UnsafeRawBufferPointer) -> Result) -> Result

Invokes the given closure with a buffer pointer covering the raw bytes of the given argument.

func withUnsafeBytes<T, Result>(of: inout T, (UnsafeRawBufferPointer) -> Result) -> Result

Invokes the given closure with a buffer pointer covering the raw bytes of the given argument.

func withUnsafeMutableBytes<T, Result>(of: inout T, (UnsafeMutableRawBufferPointer) -> Result) -> Result

Invokes the given closure with a mutable buffer pointer covering the raw bytes of the given argument.

func swap<T>(inout T, inout T)

Exchanges the values of the two arguments.