NSURLSession iOS 10 中无法访问证书 过期https 解决方法

NSURLSession iOS 10 中无法访问证书 过期https 解决方法 


用 + (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration delegate:(nullable id)delegate delegateQueue:(nullable NSOperationQueue *)queue; 创建 NSURLSession 实例; 指定代理

* 实现协议的 - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * _Nullable credential))completionHandler;

**具体实现**

'

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge    *)challenge

completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler

{

NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengePerformDefaultHandling;

__block NSURLCredential *credential = nil;

if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {

disposition = NSURLSessionAuthChallengeUseCredential;

credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];

} else {

disposition = NSURLSessionAuthChallengePerformDefaultHandling;

}

if (completionHandler) {

completionHandler(disposition, credential);

}

}


7. 你是用什么方法设置图片圆角?

首先你是否是这么设置的:

//cornerRadius 设置为self.iconImage图片宽度的一半(圆形图片)

self.iconImage.layer.cornerRadius = 20;

self.iconImage.layer.masksToBounds = YES;

或者是在xib&storyboard中点击要设置圆角的图片:

NSURLSession iOS 10 中无法访问证书 过期https 解决方法_第1张图片

在此之后建议大家尽量不要这么设置, 因为使用图层过量会有卡顿现象, 特别是弄圆角或者阴影会很卡, 如果设置图片圆角我们一般用绘图来做:

/** 设置圆形图片(放到分类中使用) */

- (UIImage *)cutCircleImage {

UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0);

// 获取上下文

CGContextRef ctr = UIGraphicsGetCurrentContext();

// 设置圆形

CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);

CGContextAddEllipseInRect(ctr, rect);

// 裁剪

CGContextClip(ctr);

// 将图片画上去

[self drawInRect:rect];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return image;

}

这个方法就是设置圆角图片, 效率很高, 不会造成卡顿现象, 大家要把这个方法单独放到分类中使用

8. ## 与 @# 在宏里面该怎样使用

##的使用, 首先我们添加一个宏

#define LRWeakSelf(type) __weak typeof(type) weak##type = type;

##是连接的作用, 即当使用上面的宏会把weak与输入的type值连接起来如下图:

NSURLSession iOS 10 中无法访问证书 过期https 解决方法_第2张图片

#的意思是紧跟着它的后面的标识符添加一个双引号""

@#的使用, 我们添加一个普通的宏://随便写一个宏

#define LRToast(str) [NSString stringWithFormat:@"%@",str]

//这个宏需要这样写

LRToast(@"温馨提示");

NSLog(@"%@",LRToast(@"温馨提示"));

强调下我只是随便定义一个宏来做示例, 以上代码是正常的使用,我们在来看看添加@#是怎么使用的://随便写一个宏

#define LRToast(str) [NSString stringWithFormat:@"%@",@#str]

//这个宏需要这样写

LRToast(温馨提示);

//正常运行, 打印不会报错

NSLog(@"%@",LRToast(温馨提示));

我们可以看出来 LRToast(温馨提示);与LRToast(@"温馨提示");区别, 也就是说@#可以代替@"" 那么我们以后开发就省事了, 不用再添加@""了!

你可能感兴趣的:(NSURLSession iOS 10 中无法访问证书 过期https 解决方法)