[英]Export SwiftUI View via UnsafeMutableRawPointer
我想返回一個 SwiftUI Text
View 作為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
object 的底層指針?
用自己的 class 包起來
@_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 視圖,所以文本,是結構,即。 值類型。 這就是編譯器告訴你的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.