【iOS】Swift Unmanaged

我写文章的目的主要是做个记录和锻炼自己的写作能力,能力有限,如果有什么问题,欢迎指正!

在调用C方法的时候,往往需要传递一个对象的指针,而对于swift来说,用到指针的情况比较少。如果只是将一个对象的指针传递给C方法,可以如下简单方法获取对象的指针:

withUnsafeBytes(of: &self) { (ptr) -> Void in

 }
 
withUnsafePointer(to: &self) { (ptr) -> Void in
 }

假如通过这种方法传递对象的指针,就会在将指针转换成class对象的时候遇到问题。所以,这里需要用到Unmanaged。

Unmanaged是一个结构体,可以用来获取一个对象的指针,也可以将一个指针转换成一个对象:

// 获取指针
let ptr = UnsafeMutableRawPointer(Unmanaged<A>.passUnretained(a).toOpaque())
//获取对象
let obj = Unmanaged<A>.fromOpaque(ptr).takeUnretainedValue()
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容