Swift: Impossible de convertir une valeur de type 'UnsafeMutablePointer' à attendre argument de type 'UnsafeMutablePointer'
J'ai un petit Problème avec mon Code après la mise à jour de Swift 3. J'ai eu ce Code avant la conversion:
extension NSData {
func castToCPointer<T>() -> T {
let mem = UnsafeMutablePointer<T>.alloc(sizeof(T.Type))
self.getBytes(mem, length: sizeof(T.Type))
return mem.move()
}
}
Et je me suis converti à présent Code et dans la 3e ligne, j'obtiens une Erreur
... Impossible de convertir une valeur de type 'UnsafeMutablePointer' à attendre argument de type 'UnsafeMutablePointer'
extension Data {
func castToCPointer<T>() -> T{
let mem = UnsafeMutablePointer<T>.allocate(capacity: MemoryLayout<T.Type>.size)
self.copyBytes(to: mem, count: MemoryLayout<T.Type>.size)
//self.copyBytes(to: mem, count: MemoryLayout<T.Type>.size)
return mem.move()
}
}
Personne ne sait comment se débarrasser de cette?
Vous devez vous connecter pour publier un commentaire.
copyBytes
s'attend à unUnsafeMutableBufferPointer
comme argument:(
allocate()
prend le nombre de "postes" comme argument, et non le nombre deoctets.)
Mais notez que votre méthode de fuites de mémoire, la mémoire allouée
est deinitialized (avec
move()
), mais aussidésalloué:
Une solution plus simple serait (à partir de
aller-retour Swift nombre de types de/à partir de Données):
Vous pouvez également utiliser la syntaxe suivante dans le prolongement