Se ho un metodo come:Swift 2 - UnsafeMutablePointer <Void> di opporsi
func someMethod(contextPtr: UnsafeMutablePointer<Void>)
Come faccio a ottenere l'oggetto dalla contextPtr
?
func someMethod(contextPtr: UnsafeMutablePointer<Void>){
let object:MyObject = contextPtr.memory
}
dà:
'Vuoto' non è convertibile in 'MyObject'
Qual è il segreto salsa
Più particolare:
W cappello In realtà sto facendo qui è la creazione di una funzione di callback globale per SCNetworkReachability
:
func callback(reachability:SCNetworkReachability, flags: SCNetworkReachabilityFlags, info: UnsafeMutablePointer<Void>) {
let r:Reachability = info.memory
}
e quindi aggiungendo il callback come segue:
var context = SCNetworkReachabilityContext(version: 0, info: nil, retain: nil, release: nil, copyDescription: nil)
var s = self
withUnsafeMutablePointer(&s) {
context.info = UnsafeMutablePointer($0)
}
SCNetworkReachabilitySetCallback(reachability, callback, &context)
Cosa si passa quando tu * chiami * il metodo? E perché è passato come puntatore vuoto? –
Stavo cercando di semplificare un po 'il codice - Ho aggiunto qualche altro dettaglio –