2016-08-31 1 views
3

J'essaie de mettre à jour Reachability.swift à la version 3.0 et j'ai du mal à passer l'instance d'accessibilité à la fonction de rappel.Impossible d'appeler l'initialiseur pour le type 'UnsafeMutablePointer'

Voici mon extrait: * S'il vous plaît noter auto = joignabilité classe

var context = SCNetworkReachabilityContext(version: 0, info: nil, retain: nil, release: nil, copyDescription: nil) 

context.info = UnsafeMutablePointer(Unmanaged.passUnretained(self).toOpaque()) 

Lorsque le compilateur génère une erreur en disant:

peut invoquer initialiseur pour le type 'UnsafeMutablePointer < _>' avec Liste des arguments de type '(UnsafeMutableRawPointer)'

Conversion de pointeur restreinte: utilisez '.assumingMemory' Lié (à :) 'ou ' .bindMemory (à: capacity :) 'pour afficher la mémoire en tant que type.

Surcharges pour 'UnsafeMutablePointer < _>' existent avec ces partiellement listes de paramètres correspondants: (RawPointer), (OpaquePointer), (OpaquePointer?), (UnsafeMutablePointer), (UnsafeMutablePointer?)

Ce que je comprends, j'ai besoin de convertir moi-même qui est de type open class Reachability: NSObject à un UnsafeMutablPointer mais je ne sais pas comment procéder.

+1

à le rappel 'func callback (accessibilité: SCNetworkReachability, drapeaux: SCNetworkReachabilityFlags, info: UnsafeMutableRawPointer?) { print (" --- callback ") garde let info = info else {retour} let reachability = Non géré .fromOpaque (info) .takeUnretainedValue() DispatchQueue.main.async { reachability.reachabilityChanged() } } ' –

+1

https://www.dropbox.com/s/d6uc8z8kij1zmmf/Reachability%20Swift%203.zip?dl=1 –

+1

@LeoDabus merci c'est génial! –

Répondre

3

Vérifiez le type de info propriété de the latest reference:

Déclaration

var info: UnsafeMutableRawPointer? 

Et le type de toOpaque() est devenu UnsafeMutableRawPointer. (je ne pouvais pas avoir trouvé un document d'Apple mis à jour, mais vous pouvez le vérifier facilement dans le volet d'aide rapide de Xcode.)

Vous avez pas besoin de convertir:

context.info = Unmanaged.passUnretained(self).toOpaque()