A partir d'une définition de classe comme suit:coulée une variable de type 'UnsafeMutableRawPointer' à UnsafeMutablePointer <> Swift 3
class Player {
var playbackFile: AudioFileID? = nil
var packetPosition: Int64 = 0
var numPacketsToRead: UInt32 = 0
var packetDescs: UnsafeMutablePointer<AudioStreamPacketDescription>? = nil
var isDone = false
}
définir ensuite une fonction de rappel:
let AQOutputCallback: AudioQueueOutputCallback = {(inUserData, inAQ, inCompleteAQBuffer) ->() in
let aqp = UnsafeMutablePointer<Player>(inUserData).pointee // this gives an error
// more code
}
Il en résulte une erreur sur la deuxième ligne: "Impossible d'appeler l'initialiseur pour le type 'UnsafeMutablePointer' avec une liste d'arguments de type 'UnsafeMutableRawPointer?'
Comment puis-je convertir correctement du type 'UnsafeMutableRawPointer?' ? À 'UnsafeMutablePointer' à Swift 3
'assumingMemoryBound (à:)'. Les pointeurs bruts ne doivent pas être "castés" comme dans C. – CodaFi
Ce qui suit a fonctionné: 'let aqp = inUserData! .assumingMemoryBound (à: Player.self) .pointee'. Je vous remercie. –
@BDWild Ne pas modifier la question pour afficher la réponse: _answer_ la question (en réponse). Répondre à votre propre question est parfaitement bien. En 48 heures, vous pouvez même accepter votre propre réponse. – matt