AFN为什么添加一条常驻线程


title: AFN为什么添加一条常驻线程
date: 2017-05-04 15:01:43
tags:



今天早上看到一个很好的面试题.作为渣渣的我很想尝试这自己捋清楚答案~
这个问题可以分为两个部分回答
1为什么要添加一个不退出的线程
2为什么只添加了一个线程
只不过水平有限,无法完全回答. 最后在 [BS大神这里](http://www.jianshu.com/p/10121d699c32#) 找到了答案


AFN 的做法是把网络请求的发起和解析都放在同一个子线程中进行,但由于子线程默认不开启 runloop,它会向一个 C语言程序那样在运行完所有代码后退出线程。而网络请求是异步的,这会导致获取到请求数据时,线程已经退出,代理方法没有机会执行。因此,AFN 的做法是使用一个 runloop 来保证线程不死~

然而频繁的创建线程并启动runloop肯定会造成内存泄露(runloop 无法停止.线程无法退出)
所以AFN就创建了一个单例线程,并且保证线程不退出~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容