有一段代码:
func someFunc() {
networkLayer.getSome { [weak self] result in
guard let self else { return }
self.networkLayer.getOtherSome(from: result) { response in
self.parse(response) // будет ли здесь сильный захват ссылки на self?
}
}
}
本质上,这里创建了一个展开链接,然后我们在下一个闭包中捕获这个展开链接。但尚不清楚 - 我们在第二个闭包中捕获哪个链接,强链接还是弱链接?
会有很强的抓地力。
对于弱捕获,您要么需要再次使用
[weak self]
,要么删除守卫分配(如果整个函数由单个调用组成,则实际上不需要)。