iOS中的同步队列与异步队列

我首先遇到的问题是,在处理包含从数据库下载的文本和图像的UITableView时,在主异步队列中声明下载任务的目的是什么。

但是,等等,什么是主队列,什么是同步或异步内容? 为什么我们需要它们?

首先,在您的iOS APP中有许多工作正在执行。 当然,还有一些重要的任务,就像还有一些不太重要/紧急的任务一样。

队列:串行和并发。 串行队列一次处理一个任务。 并发队列可同时处理多任务。

异步和同步是通信实践。 一般来说,同步阻止等待处理的任务,直到当前任务完成为止;另一方面,异步允许进行多线程任务。 (请参见此处的参考:http://www.cs.unc.edu/~dewan/242/s06/notes/ipc/node9.html)

主队列和全局队列 。 顾名思义,主队列具有被处理的优先级。 iOS APP中的线程就像高级方法。 主线程就像主分配器。 (详细的很棒的解释:https://stackoverflow.com/questions/19179358/concurrent-vs-serial-queues-in-gcd)

根据经验,与您的APP UI演示有关的任务是这些重要任务,必须优先处理。 将复杂或耗时的计算任务放在后台线程中。 因此,在主队列中声明下载(UI)任务。

像这样:

  //这里有一个tableView,其单元格images(houseImage)依赖于从数据库下载的图像:cell.houseImage.image = UIImage(data:data!)//由于它是我们的主要UI组件; 在主线程中声明此下载任务:DispatchQueue.main.async {cell.houseImage.image = UIImage(data:data!)} 
```

现在,用户将很高兴。 我希望你们也对此感到满意!

Interesting Posts