在Swift中,当使用“ [weak self] in”时,当嵌套在另一个闭包中时,我应该加倍使用吗?

Set*_*hmr 8 closures memory-leaks memory-management swift

在Swift中,当使用时[weak self] in,当嵌套在另一个闭包中时,我应该加倍使用。

例:

override func viewDidLoad() {
    super.viewDidLoad()

    makeAPICall() { [weak self] in

        self?.finishedAPICall = true

        DispatchQueue.main.async { [weak self] in
            // random code with self
            self?.view.layoutIfNeeded()
        }
    }
}

func makeAPICall(completion: () -> Void) {}
Run Code Online (Sandbox Code Playgroud)

最外层[weak self]使得以下所有自我都是可选的。这是否意味着它也一直在将其保存在嵌套闭包内部的内存中?如果我在两个方面都使用自我,是否在两个方面都需要自我?