what?
NSURLProtocol能够让我们去重新定义苹果的URL Loading System
URL Loading System如上图,这个Request会被我们NSURLProtocol拦截,从而我们就可以进行一些处理
在使用中,不应该直接去实例化一个NSURLProtocol,而是需要去使用该类的子类,并需要注册
where?
重定向网络请求
可以拦截UIWebView、基于系统的NSURLConnection或者NSUSLSession进行的网络请求,做网络缓存,目前WKWebView不会被拦截
拦截图片加载请求,使用本地图片
过滤非法请求
use?
生成一个NSURLProtocol的子类,实现主要方法
canInitWithRequest:判断request是否需要被拦截,默认返回NO,不需要
canonicalRequestForRequest:返回一个request
startLoading:开始Loading,在此方法中进行拦截
stopLoading:介绍Loading
Tip?
自定义多个NSURLProtocol子类A,B,A先注册、B后注册,先执行B的canInitWithRequest,如果返回YES,request被B拦截,如果B返回NO,则再执行A的canInitWithRequest!
网友评论