簡體   English   中英

withUnsafePointers 不可用

[英]withUnsafePointers is unavailable

我正在嘗試將以下代碼從 swift 2 升級到 3,但我發現 withUnsafePointers 不可用:改用嵌套 withUnsafePointer。 我已經嘗試了幾種方法,但我無法做到。 他是我的代碼

  var v: LinphoneManager = self
  var lct: LinphoneCoreVTable = LinphoneCoreVTable()
       let theLinphoneCore : OpaquePointer = withUnsafePointers(&lct, &v, { (ptr: UnsafePointer<LinphoneCoreVTable>, selfPtr: UnsafePointer<LinphoneManager>) -> OpaquePointer in

                let voidPtr: UnsafeMutableRawPointer = unsafeBitCast(selfPtr, to: UnsafeMutableRawPointer.self)
             return linphone_core_new_with_config (ptr, self.configDb!, voidPtr /* user_data */)
        })

錯誤信息:

withUnsafePointers 不可用:改用嵌套的 withUnsafePointer

手段代替調用withUnsafePointers(它有兩個項目,並創建指向每個)與兩次調用withUnsafePointer ,一個接一個的瓶蓋內,每次取一個項目,並創建一個指向它的指針。

所以這:

withUnsafePointers(&a, &b) { aPtr, bPtr in
    // do something with aPtr and bPtr
}

變成這樣:

withUnsafePointer(&a) { aPtr in
    withUnsafePointer(&b) { bPtr in
        // do something with aPtr and bPtr
    }
}

我在剛剛更新為 swift3 的項目中使用 linphone。 這就是我將這些行更新為的內容。 似乎運作良好。 希望這可以幫助!

var lct: LinphoneCoreVTable = LinphoneCoreVTable()
        theLinphoneCore = withUnsafePointer(to: &lct) { (ptr: UnsafePointer<LinphoneCoreVTable>) -> OpaquePointer in
            let selfPtr: BTVoipService = self
            let voidPtr: UnsafeMutableRawPointer = unsafeBitCast(selfPtr, to: UnsafeMutableRawPointer.self)
            return linphone_core_new_with_config (ptr, self.configDb!, voidPtr /* user_data */)
        }

暫無
暫無

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

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