Dans les bêtres précédents, j'ai pu passer un pointeur à quelque chose à faire quelque chose comme ça avec la fonction C comme ceci: p> Maintenant (à coup sûr en beta4, peut-être même en beta3) La syntaxe traduite de C à Swift a changé p> avant, la fonction dosomique attendait un cmutablePoinger (qui a maintenant été retiré de Rapide)
Maintenant, il s'attend à ce que: p> () est un typealias à vide p> donc, la conversation syntaxiquement est plus claire.
Cependant, maintenant, je ne peux pas comprendre comment prendre le vide ** pointeur de n'importe quel objet comme je faisais dans les bêtas précédents. P> Toute suggestion? p> p>
3 Réponses :
Je ne sais pas si c'est la bonne réponse, j'espère que quelqu'un a une meilleure méthode pour le faire.
Le principal problème était qu'il n'y a pas de conversion directe entre un objet SWIFT et un non-père annulé ( inégovié code>)
Cependant, j'ai réussi à le faire passer via un CopaquePointer
// since I can't go directly from NSMutableString to UnsafePointer<()> (which is UnsafePointer<Void>) i pass through a COpaquePointer
var aString : NSMutableString = NSMutableString(string: "test") // create an NSString
var anUnmanaged = Unmanaged.passUnretained(aString) // take an unmanaged pointer
var opaque : COpaquePointer = anUnmanaged.toOpaque() // convert it to a COpaquePointer
var anUnsafe : UnsafePointer<()> = UnsafePointer(opaque) // convert it to an UnsafePointer to Void ( () is a Typealias to Void) using the init(_ other: COpaquePointer) initializer
doSomething(&anotherUnsafe)
Cela a fonctionné pour moi:
var str = "Hello, playground" var p: UnsafePointer<Void> = unsafeAddressOf(str)
Pouvez-vous essayer ceci: puis: p>
J'ai le même problème.