6

バックグラウンド キューで実行される NSURLSession があります。NSURLProtocolサブクラスをに追加していますNSURLsessionConfiguration.protocolClasesが、override class func canInitWithRequest(request: NSURLRequest) -> Bool決して呼び出されません。

これが私が追加する方法ですNSURLProtocol

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.protocolClasses!.append(MockNetwork)
urlSession = NSURLSession(configuration: configuration, delegate: self, delegateQueue: operationQueue)

また、バックグラウンドで実行されていないセッションで試してみましたが、機能しませんでした:

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.protocolClasses!.append(MockNetwork)
urlSession = NSURLSession(configuration: configuration)

これがうまくいかなかったので、私は試しました:

urlSession = NSURLSession.sharedSession()

そして、これを私のAppDelegateで呼び出します

NSURLProtocol.registerClass(MockNetwork)

これは機能しますが、何が間違っていますか?!

4

1 に答える 1

10

なぜこれが機能しないのかを調べるためにさらに数時間を費やした後、私はそれを行う方法を見つけました。

それ以外の:

configuration.protocolClasses?.append(MockNetwork.self)

行う:

var protocolClasses = [AnyClass]()
protocolClasses.append(MockNetwork.self)

let configuration = URLSessionConfiguration.default
configuration.protocolClasses = protocolClasses

その後、すべてが機能し、変更する必要はありませんURLProtocol.registerClass(MockNetwork.self)

于 2015-02-25T13:25:50.860 に答える