iOS NSURLSession 学习(2)

来源:互联网 发布:会java学php要多久 编辑:程序博客网 时间:2024/05/16 16:17


到底NSURLSession是怎么工作的?我做了个实验,如下图,感兴趣的同学可以自己查看分析



组织自然语言是程序员的弱点,我就罗列几个结论吧

1 瞬间给NSURLSession添加5个下载任务,那么他会启动几个任务呢,从log看,大概是4个,我让程序跑了几分钟,任务都没完成的时候,始终没有 task 5出现。

2 同一个Task,接收到数据-->写入缓存-->回调(注意顺序)时,最后的一步 “回调”,所在的线程不是同一个线程。但是,都是同一个OperationQueue,就是初始化Session时传入的那个queue,并且所有的Task回调时,都是在这个queue上回来的。

3 据上猜测:Session内部处理流程就是 接收数据-->写入磁盘缓存-->回调给我们的代码,每一个步骤可能都有一个执行的queue,也就是说,在回调给我们的代码的时候,Session将信息一股脑的丢给我们传入的那个 delegateQueue,让他开启线程执行回调(至于同一个task的多个回调信息<写完一段就有一个回调信息>是否在同一个线程传上来,Session就不管了,让这个delegateQueue自己去处理),这里就说明了在创建Session的时候,为什么这个叫 delegateQueue,而不是其它的queue。当时对这个就有疑惑,现在终于明白了。大家可以猜测:他这么设计的意图是什么?

我觉得比较关心的就是这几个结论,还有,假如我们在创建Session的时候不给她指定一个delegateQueue,会是什么情况呢?感兴趣的同学可以自己做实验喔。



0 0
原创粉丝点击