我有一个使用DispatchQueue的自定义类。
class MyCustomClass {
func fetch(fromURL url: URL) {
DispatchQueue.global().async { [weak self] in
// workItem stuff where self? is called
}
}
}
[弱自我]是否必要? workItem闭包引用了MyCustomClass的实例,所以我看到了很强的引用,但是MyCustomClass的实例是否保留对传递给async()的封闭的workItem块的引用?似乎不是,所以在这种情况下[弱自我]是不必要的吗?
答案 0 :(得分:3)
但是MyCustomClass实例是否保留对传递给async()的封闭workItem块的引用?
不是这个例子中的,不是。
但是,如果MyCustomClass
实例具有一个DispatchQueue
而不是全局队列,那么它将强烈引用工作时间直到完成。
答案 1 :(得分:2)
不,不需要单身DispatchQueue.global()
DispatchQueue.global().async
对self
的引用不强,GCD不会引起保留周期