AFNetworking中的url_session_manager_create_task_safely

对于url_session_manager_create_task_safely这个有什么用?其实这个是被当做是一个在ios8以下,NSURLSessionDataTask出现的一个Bug。问题产生的原因就是当队列是并发的,这是当两个任务同时在不同的线程上创建任务的时候taskIdentifier可能是一样的。

这样在AFNetworking中会产生的问题,在2014年的时候被人提出,

大致的意思其实就是当我们同时创建两个任务,返回了重复的taskIdentifier,这样的话第一个被创建的completionHandler就会被清空,被第二个任务的completionHandler给替换,如果第一个数据是早于第二个数据返回的,那么第一个数据返回之后就会去调用第二个任务的completionHandler。


对于这个Bug其实上面也是有所描述在一个网站上http://openradar.appspot.com/radar?id=5871104061079552有描述,具体如下,正好说明了这个问题


所以我们可以看到在AFN中有这样的代码,其实就是在判断是不是ios8平台以下,如果是的话,就加一个串行队列解决问题


关于这一点,在讨论区里面也有人说在ios8的时候被修复,而且这里必须要做判断是不是ios8以下,在之前的一个版本里面是没有判断的

判断之后的版本如下所示


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值