NSURLProtocol对象处理特定于协议的URL数据的加载。
NSURLProtocol类本身是一个抽象类,它提供用于处理具有特定URL方案的URL的基础结构。 您可以为应用程序支持的任何自定义协议或URL方案创建子类。
一、概述
应用程序不需要直接实例化一个NSURLProtocol
子类。 当下载开始时,系统创建适当的协议对象来处理相应的URL请求。 所有您需要做的是定义您的协议类,并在应用程序启动时间内调用register Class: class方法,以便系统知道您的协议。
注意
您不能在watchOS 2和更高版本中使用此类定义自定义URL方案和协议。
为了支持协议特定请求的定制,苹果鼓励我们用任何自定义的API来定义NSURLRequest 和NSMutable URLRequest。需要以这种方式扩展NSURLRequest和NSMutable URLRequest协议实现者可以通过使用NSURLProtocol的类方法来存储和检索协议特定的请求数据。 property For Key: in Request:并set Property: for Key: in Request:
。
协议实现着的重要职责是NSURLResponse处理的每个请求创建一个NSURLResponse。协议实现者可能希望创建一个自定义的,可变的NSURLResponse类来提供特定于协议的信息。
二、相关的方法
1、创建协议对象
- init With Request: cached Response: client:初始化并返回协议对象。
2、注册和注销协议类
+ register Class:尝试注册NSURLProtocol
的子类,使其对URL加载系统可见。
+ unregister Class:注销NSURLProtocol的指定子类。
3、确定子类是否可以处理请求
+ can Init With Request:返回协议子类是否可以处理指定的请求。
4、获取和设置请求属性
+ property For Key: in Request:返回与指定的请求中指定的关键字关联的属性。
+ set Property: for Key: in Request:在指定的请求中设置与指定键相关联的属性。
+ remove Property For Key: in Request:删除在指定的请求中与指定键相关联的属性。
5、提供请求的规范版本
+ canonical Request For Request:返回指定请求的规范版本。
6、确定请求是否相当于缓存
+ request Is Cache Equivalent: to Request:返回两个请求是否等同于缓存目的。
7、启动和停止下载
- start Loading开始协议特定的请求加载。
- stop Loading停止协议特定的请求加载。
8、获取协议属性
cached Response接收者的缓存响应。
client接收者用来与URL加载系统通信的对象。
request接收方的请求。
9、初始化
- init With Task: cached Response: client:
10、实例属性
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
网友评论