簡體   English   中英

導出 SwiftUI 通過 UnsafeMutableRawPointer 查看

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM