##什么af2.0有常驻的子线程,3.0为什么没有(AFNetw

2018-12-09  本文已影响20人  Adam_潜

https://www.jianshu.com/p/b5c27669e2c1

NSURLConnection的一大痛点就是:发起请求后,这条线程并不能随风而去,而需要一直处于等待回调的状态。
苹果也是明白了这一痛点,从iOS9.0开始 deprecated 了NSURLConnection。 替代方案就是NSURLSession。当然NSURLSession还解决了很多其他的问题,这里不作赘述。
NSURLSession发起的请求,不再需要在当前线程进行代理方法的回调!可以指定回调的delegateQueue,这样我们就不用为了等待代理回调方法而苦苦保活线程了。

同时还要注意一下,指定的用于接收回调的Queue的maxConcurrentOperationCount设为了1,这里目的是想要让并发的请求串行的进行回调。
而AF2.0却不需要?
这个问题不难,但是却可以帮助面试官判断面试者是否真的认真研读了AF的两个大版本的源码。
解答:功能不一样:AF3.0的operationQueue是用来接收NSURLSessionDelegate回调的,鉴于一些多线程数据访问的安全性考虑,设置了maxConcurrentOperationCount = 1来达到串行回调的效果。
而AF2.0的operationQueue是用来添加operation并进行并发请求的,所以不要设置为1。

上一篇下一篇

猜你喜欢

热点阅读