func bridge<T>(ptr: UnsafeRawPointer ) -> T
Convert from void* without ownership, only use when lifetime of object is guaranteed elsewhere
func bridgeRetained <T>(obj: T) -> UnsafeMutableRawPointer
Convert to void* with ownership, make sure these are always called in matching pairs with bridgeTransfer
func bridgeTransfer <T>(ptr: UnsafeRawPointer ) -> T
Convert from void* with ownership, make sure these are always called in matching pairs with bridgeRetained