AFN为什么添加一条常驻线程
【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就创建了一个单例线程,并且保证线程不退出~
推荐阅读
- 为什么你的路演总会超时()
- 财商智慧课(六)
- 吃了早餐,反而容易饿(为什么?)
- 为什么越花钱的人越有钱,越舍不得花钱的人却越穷()
- dubbo基本认识
- 为什么985/211的学生能胜任工作获得老板的青睐。
- 年轻人,干了孤独这杯酒
- 为什么孩子一定要学会可视化思维!
- 编写字典程序
- 关于this的一些问题(1)