NSURLProtocol對(duì)象處理特定于協(xié)議的URL數(shù)據(jù)的加載。
NSURLProtocol類本身是一個(gè)抽象類,它提供用于處理具有特定URL方案的URL的基礎(chǔ)結(jié)構(gòu)。 您可以為應(yīng)用程序支持的任何自定義協(xié)議或URL方案創(chuàng)建子類。
一、概述
應(yīng)用程序不需要直接實(shí)例化一個(gè)NSURLProtocol
子類。 當(dāng)下載開始時(shí),系統(tǒng)創(chuàng)建適當(dāng)?shù)膮f(xié)議對(duì)象來處理相應(yīng)的URL請(qǐng)求。 所有您需要做的是定義您的協(xié)議類,并在應(yīng)用程序啟動(dòng)時(shí)間內(nèi)調(diào)用register Class: class方法,以便系統(tǒng)知道您的協(xié)議。
注意
您不能在watchOS 2和更高版本中使用此類定義自定義URL方案和協(xié)議。
為了支持協(xié)議特定請(qǐng)求的定制,蘋果鼓勵(lì)我們用任何自定義的API來定義NSURLRequest 和NSMutable URLRequest。需要以這種方式擴(kuò)展NSURLRequest和NSMutable URLRequest協(xié)議實(shí)現(xiàn)者可以通過使用NSURLProtocol的類方法來存儲(chǔ)和檢索協(xié)議特定的請(qǐng)求數(shù)據(jù)。 property For Key: in Request:并set Property: for Key: in Request:
。
協(xié)議實(shí)現(xiàn)著的重要職責(zé)是NSURLResponse處理的每個(gè)請(qǐng)求創(chuàng)建一個(gè)NSURLResponse。協(xié)議實(shí)現(xiàn)者可能希望創(chuàng)建一個(gè)自定義的,可變的NSURLResponse類來提供特定于協(xié)議的信息。
二、相關(guān)的方法
1、創(chuàng)建協(xié)議對(duì)象
- init With Request: cached Response: client:初始化并返回協(xié)議對(duì)象。
2、注冊(cè)和注銷協(xié)議類
+ register Class:嘗試注冊(cè)NSURLProtocol
的子類,使其對(duì)URL加載系統(tǒng)可見。
+ unregister Class:注銷NSURLProtocol的指定子類。
3、確定子類是否可以處理請(qǐng)求
+ can Init With Request:返回協(xié)議子類是否可以處理指定的請(qǐng)求。
4、獲取和設(shè)置請(qǐng)求屬性
+ property For Key: in Request:返回與指定的請(qǐng)求中指定的關(guān)鍵字關(guān)聯(lián)的屬性。
+ set Property: for Key: in Request:在指定的請(qǐng)求中設(shè)置與指定鍵相關(guān)聯(lián)的屬性。
+ remove Property For Key: in Request:刪除在指定的請(qǐng)求中與指定鍵相關(guān)聯(lián)的屬性。
5、提供請(qǐng)求的規(guī)范版本
+ canonical Request For Request:返回指定請(qǐng)求的規(guī)范版本。
6、確定請(qǐng)求是否相當(dāng)于緩存
+ request Is Cache Equivalent: to Request:返回兩個(gè)請(qǐng)求是否等同于緩存目的。
7、啟動(dòng)和停止下載
- start Loading開始協(xié)議特定的請(qǐng)求加載。
- stop Loading停止協(xié)議特定的請(qǐng)求加載。
8、獲取協(xié)議屬性
cached Response接收者的緩存響應(yīng)。
client接收者用來與URL加載系統(tǒng)通信的對(duì)象。
request接收方的請(qǐng)求。
9、初始化
- init With Task: cached Response: client:
10、實(shí)例屬性
11、類型方法
[+ can Init With Task:}(https://translate.google.com/translate?hl=zh-CN&sl=en&u=https://developer.apple.com/reference/foundation/nsurlprotocol&prev=search)
ps:繼承自NSObject