鑄造型「UnsafeMutableRawPointer」的一個變量來UnsafeMutablePointer <>一類定義開始如下:在夫特3
class Player {
var playbackFile: AudioFileID? = nil
var packetPosition: Int64 = 0
var numPacketsToRead: UInt32 = 0
var packetDescs: UnsafeMutablePointer<AudioStreamPacketDescription>? = nil
var isDone = false
}
然後定義的回調函數:
let AQOutputCallback: AudioQueueOutputCallback = {(inUserData, inAQ, inCompleteAQBuffer) ->() in
let aqp = UnsafeMutablePointer<Player>(inUserData).pointee // this gives an error
// more code
}
這導致第二行錯誤:「不能調用類型爲'UnsafeMutableRawPointer?'的參數列表'UnsafeMutablePointer'的初始化程序。
如何從類型'UnsafeMutableRawPointer'正確投射?到在夫特3
'assumeMemoryBound(to:)'。原始指針不會像C中那樣「投射」。 – CodaFi
以下工作:'讓aqp = inUserData!.assumingMemoryBound(to:Player.self).pointee'。謝謝。 –
@BDWild不要修改問題以顯示答案:_answer_問題(作爲答案)。回答你自己的問題非常好。在48小時內,你甚至可以接受你自己的答案。 – matt