NSProtocol(一)

2017-04-27  本文已影响0人  夏天的风_song

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、实例属性

task

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

上一篇 下一篇

猜你喜欢

热点阅读