通过UnsafeMutableRawPointer导出SwiftUI视图

我想以Text的身份返回SwiftUI UnsafeMutableRawPointer视图,并遵守C调用约定,因此另一种语言可以将FFI放入其中以供使用。

@_cdecl("hi")
func hi (txt: UnsafeMutablePointer<CChar>) -> () {
   var view = ViewBuilder.buildBlock(Text(String(cString: txt)))
   return UnsafeMutableRawPointer(Unmanaged.passUnretained(view).toOpaque())
}

但是我收到以下错误:

Cannot invoke 'passUnretained' with an argument list of type '(Text)'

如何获取SwiftUI Text对象的基础指针?

lxlovekobe8 回答:通过UnsafeMutableRawPointer导出SwiftUI视图

由您自己的班级包装

@_cdecl("hi")
func hi (txt: UnsafeMutablePointer<CChar>) -> UnsafeMutableRawPointer {
   let view = ViewBuilder.buildBlock(Text(String(cString: txt)))
    return UnsafeMutableRawPointer(Unmanaged.passUnretained(Wrapper(text: view)).toOpaque())
}

final class Wrapper {
    let text: Text
    init(text: Text) {
        self.text = text
    }
}
,

SwiftUI视图(即Text)是结构,即。值类型。那就是编译器告诉你的。

本文链接:https://www.f2er.com/3104655.html

大家都在问