À propos du fait que le code pour lire le membre de la structure C (tableau Char) qui fonctionnait dans swift 2.3 dans swift 3 ne fonctionnait pas

Lors de l'exploitation d'une structure en C comme celle ci-dessous à partir de Swift via un pont

cstruct.h


 #define MEM01_SIZE 255
 struct cstruct {
    char cstr01[MEM01_SIZE];
  } 

Dans swift2, il a été fait avec le code suivant, mais dans swift3, c'était une erreur de compilation.

swift:swift2.2.swift


var size: Int32 = 0
var cstruct = GetCStruct(&size)
let cstr01_str = withUnsafePointer(&cstruct.memory.cstr01)
{
 return String.fromCString(UnsafePointer($0))!
}

Dans swift3, je suis passé en faisant ce qui suit.

swift3.swift


var cstr01_str_tuple = cstruct?.pointee.cstr01
let cstr01_str = withUnsafePointer(to: &cstr01_str_tuple)
{
  return String(cString: UnsafeRawPointer($0).assumingMemoryBound(to: CChar.self))
}

Je ne sais pas pourquoi cela fonctionne, donc je ne peux pas encore écrire de commentaire, mais cela a fonctionné pour le moment, alors prenez note.

Recommended Posts

À propos du fait que le code pour lire le membre de la structure C (tableau Char) qui fonctionnait dans swift 2.3 dans swift 3 ne fonctionnait pas
[Swift] Comment décrire simplement le rejet qui n’a pas été enseigné dans le livre d’introduction
À propos du fait que: nth-child (-n + m) ne fonctionne pas comme prévu dans le sélecteur de jsoup
À propos de la question pour laquelle j'étais accro à l'utilisation de hashmap
Pourquoi le code était-il pénible à lire?