@@ -48,14 +48,23 @@ public class URLSessionInstrumentation {
4848 }
4949
5050 private func injectInNSURLClasses( ) {
51+ #if swift(<5.7)
5152 let selectors = [
5253 #selector( URLSessionDataDelegate . urlSession ( _: dataTask: didReceive: ) ) ,
5354 #selector( URLSessionDataDelegate . urlSession ( _: dataTask: didReceive: completionHandler: ) ) ,
5455 #selector( URLSessionDataDelegate . urlSession ( _: task: didCompleteWithError: ) ) ,
5556 #selector( URLSessionDataDelegate . urlSession ( _: dataTask: didBecome: ) ! as ( URLSessionDataDelegate ) -> ( URLSession , URLSessionDataTask , URLSessionDownloadTask ) -> Void ) ,
5657 #selector( URLSessionDataDelegate . urlSession ( _: dataTask: didBecome: ) ! as ( URLSessionDataDelegate ) -> ( URLSession , URLSessionDataTask , URLSessionStreamTask ) -> Void )
5758 ]
58-
59+ #else
60+ let selectors = [
61+ #selector( URLSessionDataDelegate . urlSession ( _: dataTask: didReceive: ) ) ,
62+ #selector( URLSessionDataDelegate . urlSession ( _: dataTask: didReceive: completionHandler: ) ) ,
63+ #selector( URLSessionDataDelegate . urlSession ( _: task: didCompleteWithError: ) ) ,
64+ #selector( URLSessionDataDelegate . urlSession ( _: dataTask: didBecome: ) as ( URLSessionDataDelegate ) -> ( ( URLSession , URLSessionDataTask , URLSessionDownloadTask ) -> Void ) ? ) ,
65+ #selector( URLSessionDataDelegate . urlSession ( _: dataTask: didBecome: ) as ( URLSessionDataDelegate ) -> ( ( URLSession , URLSessionDataTask , URLSessionStreamTask ) -> Void ) ? )
66+ ]
67+ #endif
5968 let classes = InstrumentationUtils . objc_getClassList ( )
6069 classes. forEach {
6170 guard $0 != Self . self else { return }
@@ -242,7 +251,7 @@ public class URLSessionInstrumentation {
242251
243252 if let request = argument as? URLRequest , objc_getAssociatedObject ( argument, & idKey) == nil {
244253 let instrumentedRequest = URLSessionLogger . processAndLogRequest ( request, sessionTaskId: sessionTaskId, instrumentation: self , shouldInjectHeaders: true )
245- task = castedIMP ( session, selector, instrumentedRequest ?? request, completionBlock)
254+ task = castedIMP ( session, selector, instrumentedRequest ?? request, completionBlock)
246255 } else {
247256 task = castedIMP ( session, selector, argument, completionBlock)
248257 if objc_getAssociatedObject ( argument, & idKey) == nil ,
@@ -457,7 +466,11 @@ public class URLSessionInstrumentation {
457466 }
458467
459468 private func injectDataTaskDidBecomeDownloadTaskIntoDelegateClass( cls: AnyClass ) {
469+ #if swift(<5.7)
460470 let selector = #selector( URLSessionDataDelegate . urlSession ( _: dataTask: didBecome: ) ! as ( URLSessionDataDelegate ) -> ( URLSession , URLSessionDataTask , URLSessionDownloadTask ) -> Void )
471+ #else
472+ let selector = #selector( URLSessionDataDelegate . urlSession ( _: dataTask: didBecome: ) as ( URLSessionDataDelegate ) -> ( ( URLSession , URLSessionDataTask , URLSessionDownloadTask ) -> Void ) ? )
473+ #endif
461474 guard let original = class_getInstanceMethod ( cls, selector) else {
462475 return
463476 }
0 commit comments