添加DispatchQueue.global(qos: .background).async {}
到我的代码(Xcode 10、Swift 5)的单个函数后,滚动条如下所示:
这些是对需要“自我”的 var 和其他函数的 40 多个调用。
解决这个问题并不难(编辑器 > 修复所有问题),但它会大大降低可读性。
我知道可以创建这些变量的新副本/引用并使用它们而不是外部的,但是会有很多新的副本/引用。
是否有第三种方法可以解决此问题,有助于提高可读性但不会更改初始代码(太多)?
添加DispatchQueue.global(qos: .background).async {}
到我的代码(Xcode 10、Swift 5)的单个函数后,滚动条如下所示:
这些是对需要“自我”的 var 和其他函数的 40 多个调用。
解决这个问题并不难(编辑器 > 修复所有问题),但它会大大降低可读性。
我知道可以创建这些变量的新副本/引用并使用它们而不是外部的,但是会有很多新的副本/引用。
是否有第三种方法可以解决此问题,有助于提高可读性但不会更改初始代码(太多)?
您可以创建一个嵌套函数或其他方法来放置您要执行的代码,然后将该嵌套函数或方法传递给DispatchQueue.main.async
.
这是一个带有嵌套函数的示例:
原始代码:
class Foo {
var a = 0
var b = 0
var c = 0
func f() {
a = 1
b = 1
c = 1
}
}
异步执行:
class Foo {
var a = 0
var b = 0
var c = 0
func f() {
func doAsync() {
a = 1
b = 1
c = 1
}
DispatchQueue.global(qos: .background).async(execute: doAsync)
}
}
如您所见,您不需要添加任何self
s。