mirror of
https://github.com/NohamR/knowledge-kit.git
synced 2026-05-24 20:00:37 +00:00
docs: refine
This commit is contained in:
@@ -180,4 +180,34 @@ if (self.socket == NULL) {
|
||||
[_delegates setObject:delegate forKey:task];
|
||||
[task resume];
|
||||
}
|
||||
```
|
||||
|
||||
### NSURLProtocol 主意事项
|
||||
使用 NSURLProtocol 的时候,如果是代理 NSURLSession 的网络请求,则需要重写 protocolClasses 方法。但是在你往给方法设置 protocolClasses 的时候可能全局也有其他 SDK、工具类也做了修改。这样子需要注意不能丢弃别人的,也不能丢弃自己的。参考 OHHTTPStubs 在注册 NSURLProtocol 子类的处理
|
||||
```
|
||||
+ (void)setEnabled:(BOOL)enable forSessionConfiguration:(NSURLSessionConfiguration*)sessionConfig
|
||||
{
|
||||
// Runtime check to make sure the API is available on this version
|
||||
if ( [sessionConfig respondsToSelector:@selector(protocolClasses)]
|
||||
&& [sessionConfig respondsToSelector:@selector(setProtocolClasses:)])
|
||||
{
|
||||
NSMutableArray * urlProtocolClasses = [NSMutableArray arrayWithArray:sessionConfig.protocolClasses];
|
||||
Class protoCls = HTTPStubsProtocol.class;
|
||||
if (enable && ![urlProtocolClasses containsObject:protoCls])
|
||||
{
|
||||
[urlProtocolClasses insertObject:protoCls atIndex:0];
|
||||
}
|
||||
else if (!enable && [urlProtocolClasses containsObject:protoCls])
|
||||
{
|
||||
[urlProtocolClasses removeObject:protoCls];
|
||||
}
|
||||
sessionConfig.protocolClasses = urlProtocolClasses;
|
||||
}
|
||||
else
|
||||
{
|
||||
NSLog(@"[OHHTTPStubs] %@ is only available when running on iOS7+/OSX9+. "
|
||||
@"Use conditions like 'if ([NSURLSessionConfiguration class])' to only call "
|
||||
@"this method if the user is running iOS7+/OSX9+.", NSStringFromSelector(_cmd));
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user