相关疑难解决方法(0)

Swift3 GCD中的main.async vs main.sync()vs global().async

示例A: - 这会导致App Crash.

DispatchQueue.main.async {           
        let url = URL(string: imageUrl)
        do {
             let data = try Data(contentsOf: url!)
                DispatchQueue.main.sync {
                    self.imageIcon.image = UIImage(data: data)
                }
            }
Run Code Online (Sandbox Code Playgroud)

例B: - 但事实并非如此

DispatchQueue.global().async {  
        let url = URL(string: imageUrl)
        do {
            let data = try Data(contentsOf: url!)
                DispatchQueue.main.sync {
                    self.imageIcon.image = UIImage(data: data)
                }
            }
Run Code Online (Sandbox Code Playgroud)

据我所知,

  • x.sync意味着在主线程/ UI线程中执行操作而x.async意味着在后台线程中执行操作.
  • 全局意味着执行具有并发队列的东西,即并行任务

Quest1: - 那么为什么我的应用程序在后台线程(即main.async)执行任务时崩溃,而不是调用主线程来更新UI.

Quest2: - main.async和global().async有什么区别.

multithreading asynchronous ios swift swift3

7
推荐指数
3
解决办法
5082
查看次数

标签 统计

asynchronous ×1

ios ×1

multithreading ×1

swift ×1

swift3 ×1