美文网首页
##什么af2.0有常驻的子线程,3.0为什么没有(AFNetw

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

作者: Adam_潜 | 来源:发表于2018-12-09 16:17 被阅读20次

    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。

    相关文章

      网友评论

          本文标题:##什么af2.0有常驻的子线程,3.0为什么没有(AFNetw

          本文链接:https://www.haomeiwen.com/subject/hackhqtx.html