美文网首页
【iOS】Swift Unmanaged

【iOS】Swift Unmanaged

作者: Loving_1109 | 来源:发表于2020-06-18 15:54 被阅读0次

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

在调用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()

相关文章

网友评论

      本文标题:【iOS】Swift Unmanaged

      本文链接:https://www.haomeiwen.com/subject/qezyxktx.html