【发布时间】:2023-04-09 13:02:01
【问题描述】:
我对@987654323@ 的东西(包括 DispatchGroups、Qos 等)不太熟悉。我现在有一个担忧。
就像,我有一个 ViewController 可用于 Android 的 ViewPager UI。在那个 VC 中,我有一个 TableView 每次更改 ViewPager 中的“页面”时都会重新加载。
我在 TableView 单元格中有一个 favourite button 属性。当用户点击该按钮时,它会存储通话后所需的信息 (JSON)。
我想在viewWillDisappear 运行时拨打电话。在那里,我想为每个“页面”创建后台线程并捕获已经创建的线程,以防用户点击一个“页面”,由于任何原因,post 调用无法达到高潮。
这是我在课堂上的内容:
var workItem1: DispatchWorkItem!
var dispatch1: DispatchQueue!
和
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
}
我应该怎么做才能实现我的目标?
【问题讨论】:
-
我是否理解正确,您只需要多个队列以防一个调用引发异常?
-
根本不需要排队。
URLSession已经是异步的。队列不是线程。如果您习惯于线程编程,请参阅 Apple 的关于迁移到队列的指南,这是一种不同的思考问题的方式。 (尽管如此,这里不需要队列;URLSession已经有自己的队列来为您管理。)developer.apple.com/library/archive/documentation/General/… -
另请参阅developer.apple.com/documentation/foundation/url_loading_system,了解有关 URLSession 的介绍以及如何考虑它。它是一个异步系统;无需创建新的线程或队列来管理它(您通常不应该这样做)。
-
@TMob 这有点偏。我真的不想要 很多 个队列,但我希望队列能够控制它们并终止或暂停,以防我需要在已创建的 API 调用返回一些响应之前进行另一个 API 调用。
-
我需要关于 URLSession 和 queues 的指导。我发现我理解线程的整个概念是错误的。我担心的是我想控制线程并终止或挂起,以防我需要在已经创建的 API 调用返回一些响应之前进行另一个 API 调用。
标签: ios swift4 grand-central-dispatch dispatch-queue