Unmanaged

struct Unmanaged

A type for propagating an unmanaged object reference.

When you use this type, you become partially responsible for keeping the object alive.

Instance Methods

func autorelease() -> Unmanaged<Instance> Required

Performs an unbalanced autorelease of the object.

Declaration

public func autorelease() -> Unmanaged<Instance>
func release() Required

Performs an unbalanced release of the object.

Declaration

public func release()
func retain() -> Unmanaged<Instance> Required

Performs an unbalanced retain of the object.

Declaration

public func retain() -> Unmanaged<Instance>
func takeRetainedValue() -> Instance Required

Gets the value of this unmanaged reference as a managed reference and consumes an unbalanced retain of it.

This is useful when a function returns an unmanaged reference and you know that you're responsible for releasing the result.

Declaration

public func takeRetainedValue() -> Instance
func takeUnretainedValue() -> Instance Required

Gets the value of this unmanaged reference as a managed reference without consuming an unbalanced retain of it.

This is useful when a function returns an unmanaged reference and you know that you're not responsible for releasing the result.

Declaration

public func takeUnretainedValue() -> Instance
func toOpaque() -> UnsafeMutableRawPointer Required

Unsafely converts an unmanaged class reference to a pointer.

This operation does not change reference counts.

let str0 = "boxcar" as CFString
let bits = Unmanaged.passUnretained(str0)
let ptr = bits.toOpaque()

Declaration

public func toOpaque() -> UnsafeMutableRawPointer

Type Methods

func fromOpaque(_ value: UnsafeRawPointer) -> Unmanaged<Instance> Required

Unsafely turns an opaque C pointer into an unmanaged class reference.

This operation does not change reference counts.

let str: CFString = Unmanaged.fromOpaque(ptr).takeUnretainedValue()
  • Parameter value: An opaque C pointer.

Declaration

public static func fromOpaque(_ value: UnsafeRawPointer) -> Unmanaged<Instance>
func passRetained(_ value: Instance) -> Unmanaged<Instance> Required

Creates an unmanaged reference with an unbalanced retain.

The instance passed as value will leak if nothing eventually balances the retain.

This is useful when passing an object to an API which Swift does not know the ownership rules for, but you know that the API expects you to pass the object at +1.

  • Parameter value: A class instance.

Declaration

public static func passRetained(_ value: Instance) -> Unmanaged<Instance>
func passUnretained(_ value: Instance) -> Unmanaged<Instance> Required

Creates an unmanaged reference without performing an unbalanced retain.

This is useful when passing a reference to an API which Swift does not know the ownership rules for, but you know that the API expects you to pass the object at +0.

CFArraySetValueAtIndex(.passUnretained(array), i,
                       .passUnretained(object))
  • Parameter value: A class instance.

Declaration

public static func passUnretained(_ value: Instance) -> Unmanaged<Instance>