2017-05-01 4 views
1

Ich möchte URLSession Klasse Methode DataTask swizzle aber nicht in der Lage, es zu erledigen.Wie Swizzle URLSession Klassenmethode DataTask in Swift 3

Ich versuchte dieses swizzling in objective-c und es funktioniert gut in dem jetzt möchte ich dies in swift 3 implementieren, aber nichts zu bekommen.

Ich verweise this Link aber seine Arbeit nicht in schnellen 3.

Bitte helfen Sie mir.

+1

versuchen folgt Was Sie von Swizzling der Methoden erreichen wollen? Schreiben Sie Testfälle und möchten Sie die URL-Aufrufe ersetzen oder einfach nur debuggen? –

Antwort

1

können wir Methoden in schnellen swizzle als

let selectorfirst = #selector(ClassName.function(_:)) 
let swizzledFunction = #selector(ClassName.function2(_:)) 

let method1 = class_getInstanceMethod(ClassInstance, selectorfirst) 
let method2 = class_getInstanceMethod(ClassInstance, swizzledFunction) 

method_exchangeImplementations(method1, method2) 

// wie diese mit Unterklasse

 class URLSessionSubClass: URLSession { 
static var sharedInstance: URLSessionSubClass? 
static func getSharedInstance() -> URLSessionSubClass { 
    if sharedInstance == nil { 
     sharedInstance = URLSessionSubClass() 
     let selectorfirst = #selector(URLSessionSubClass.function(_:)) 
     let swizzledFunction = #selector(URLSessionSubClass.function2(_:)) 

     let method1 = class_getInstanceMethod(self, selectorfirst) 
     let method2 = class_getInstanceMethod(self, swizzledFunction) 

     method_exchangeImplementations(method1, method2) 
    } 
    return sharedInstance! 
} 
} 
+0

Bitte Lösung mit der Erweiterung URLSession angeben. –

Verwandte Themen