Skip to content

Instantly share code, notes, and snippets.

@AmatsuZero
Created January 6, 2019 07:54
Show Gist options
  • Save AmatsuZero/d34792cf469c640cbecacd89c6d3a962 to your computer and use it in GitHub Desktop.
Save AmatsuZero/d34792cf469c640cbecacd89c6d3a962 to your computer and use it in GitHub Desktop.
Swift self casting
func bridge<T : AnyObject>(obj : T) -> UnsafeRawPointer {
return UnsafeRawPointer(Unmanaged.passUnretained(obj).toOpaque())
}
func bridge<T : AnyObject>(ptr : UnsafeRawPointer) -> T {
return Unmanaged<T>.fromOpaque(ptr).takeUnretainedValue()
}
func bridgeRetained<T : AnyObject>(obj : T) -> UnsafeRawPointer {
return UnsafeRawPointer(Unmanaged.passRetained(obj).toOpaque())
}
func bridgeTransfer<T : AnyObject>(ptr : UnsafeRawPointer) -> T {
return Unmanaged<T>.fromOpaque(ptr).takeRetainedValue()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment