AutoreleasingUnsafeMutablePointer

struct AutoreleasingUnsafeMutablePointer<T>

A mutable pointer-to-ObjC-pointer argument.

This type has implicit conversions to allow passing any of the following to a C or ObjC API:

  • 'nil', which gets passed as a null pointer,
  • an inout argument of the referenced type, which gets passed as a pointer to a writeback temporary with autoreleasing ownership semantics,
  • an UnsafeMutablePointer<T>, which is passed as-is.

Passing pointers to mutable arrays of ObjC class pointers is not directly supported. Unlike UnsafeMutablePointer<T>, AutoreleasingUnsafeMutablePointer must reference storage that does not own a reference count to the referenced value. UnsafeMutablePointer's operations, by contrast, assume that the referenced storage owns values loaded from or stored to it.

This type does not carry an owner pointer unlike the other C*Pointer types because it only needs to reference the results of inout conversions, which already have writeback-scoped lifetime.

Inheritance CVarArgType, DebugPrintable, Equatable, NilLiteralConvertible, _PointerType View Protocol Hierarchy →
Import import Swift

Initializers

init()

Initialize to a null pointer.

Declaration

init()
init(_:)

Explicit construction from an UnsafeMutablePointer.

This is inherently unsafe; UnsafeMutablePointer assumes the referenced memory has +1 strong ownership semantics, whereas AutoreleasingUnsafeMutablePointer implies +0 semantics.

Declaration

init<U>(_ ptr: UnsafeMutablePointer<U>)
init(nilLiteral:)

Create an instance initialized with nil.

Declaration

init(nilLiteral: ())

Instance Variables

var debugDescription: String

A textual representation of self, suitable for debugging.

Declaration

var debugDescription: String { get }
var memory: T

Access the underlying raw memory, getting and setting values.

Declaration

var memory: T { get set }

Subscripts

subscript(_: Int)

Declaration

subscript(i: Int) -> T { get }

Instance Methods

func encode()

Transform self into a series of machine words that can be appropriately interpreted by C varargs

Declaration

func encode() -> [Word]