2016-01-18 32 views
2

NSURLSession.h ...定製NSURLProtocol子類不可用於背景會話

/* An optional array of Class objects which subclass NSURLProtocol. 
    The Class will be sent +canInitWithRequest: when determining if 
    an instance of the class can be used for a given URL scheme. 
    You should not use +[NSURLProtocol registerClass:], as that 
    method will register your class with the default session rather 
    than with an instance of NSURLSession. 
    Custom NSURLProtocol subclasses are not available to background 
    sessions. 
*/ 
@property (nullable, copy) NSArray<Class> *protocolClasses; 

定製NSURLProtocol子類不可用於背景 會議。

限制自定義NSURLProtocol子類只能在前臺會話中觸發的優點是什麼?

回答

0

從蘋果文檔:

背景會話類似於默認的會議,只是一個單獨的進程可以處理所有的數據傳輸。

蘋果公司根本沒有提供一種方法將您的NSURLProtocol子類注入另一個由iOS本身管理的進程。

相同的限制適用於WKWebView

+0

它實際上比這更微妙一點。它永遠不會將你的代碼注入到另一個進程中。現在,後臺會話通過使用NSXPC在您的應用程序中調用委託方法。如果您的應用不在那裏,它會盡其所能,並且在某些情況下,您的應用會重新啓動。如果協議處理必須通過您的應用程序,那麼在您的應用程序未運行的情況下,它將永遠無法做任何有用的事情,這將徹底打破基礎級別的背景模型。對於WKWebView,我只能假設原因是由所有這些XPC請求引起的性能下降.... – dgatwood