簡體   English   中英

如何在 Kotlin/Native 中使用 UnsafeMutableRawPointer?

[英]How to use UnsafeMutableRawPointer in Kotlin/Native?

我正在嘗試對使用 Kotlin/Native 編寫的多平台庫的 iOS 部分中給定鍵的 UserDefaults 更改實現觀察者。 我需要實現的函數的 Swift 簽名是:

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?)

但似乎在 Kotlin/Native 方面沒有UnsafeMutableRawPointer

我怎樣才能做到這一點? 我想移植到 Kotlin 的代碼 swift 代碼如下:

let globalDataStore = UserDefaults(suiteName: "global")

func setObserver() {
    globalDataStore?.addObserver(self, forKeyPath: "StringKey", options: NSKeyValueObservingOptions.new, context: nil)
}

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    print("observeValue: \(change?[NSKeyValueChangeKey.newKey] ?? "NO VLAUE")");
}

正如我在文檔中發現的, observeValue方法的 Objective-C 版本使用void *類型參數作為context 這種類型被映射到 Kotlin/Native 作為COpaquePointer (請參閱文檔的指針類型小節)。 沒有UnsafeMutableRawPointer表示,因為 K/N 目前僅提供與 Objective-C 的互操作性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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