Generic Function

unsafeBitCast(_:to:)

Returns the bits of the given instance, interpreted as having the specified type.

Declaration

func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U

Parameters

x

The instance to cast to type.

type

The type to cast x to. type and the type of x must have the same size of memory representation and compatible memory layout.

Return Value

A new instance of type U, cast from x.

Discussion

Use this function only to convert the instance passed as x to a layout-compatible type when conversion through other means is not possible. Common conversions supported by the Swift standard library include the following:

  • Value conversion from one integer type to another. Use the destination type’s initializer or the numericCast(_:) function.

  • Bitwise conversion from one integer type to another. Use the destination type’s init(truncatingIfNeeded:) or init(bitPattern:) initializer.

  • Conversion from a pointer to an integer value with the bit pattern of the pointer’s address in memory, or vice versa. Use the init(bitPattern:) initializer for the destination type.

  • Casting an instance of a reference type. Use the casting operators (as, as!, or as?) or the unsafeDowncast(_:to:) function. Do not use unsafeBitCast(_:to:) with class or pointer types; doing so may introduce undefined behavior.

See Also

Instance Casting

func unsafeDowncast<T>(AnyObject, to: T.Type) -> T

Returns the given instance cast unconditionally to the specified type.