gpt4 book ai didi

swift - [weak self] 情况下的快捷闭包语法

转载 作者:行者123 更新时间:2023-12-04 07:43:04 54 4
gpt4 key购买 nike

让我们调用一些函数,它有一个转义闭包作为参数:

someFunc(complition: {
self.someAnotherFunc()
})
相当于:
someFunc(complition: { [self] in
someAnotherFunc()
})
相当于:
someFunc(someAnotherFunc)
那是正确的吗?
我认为那是正确的。 self在上面强烈地捕捉。
那么[弱自我]的情况呢?
是我们唯一可以写的方法吗?:
someFunc(complition: { [weak self] in
self?.someAnotherFunc()
})
我们不能以某种方式把它写成 someFunc(someAnotherFunc) ?
附言好吧,还有一种写法,我知道:
someFunc { [weak self] in
self?.someAnotherFunc()
}
但是更简洁的形式呢?

最佳答案

当前 (Swift 5.4) 没有别的
实际上,闭包的默认行为是 不是 捕获 self根本。但是只要您引用 self在里面,它将创建一个对它的强引用。
有一个关于它的公开讨论 here on swift.org
由于您没有提到您的函数的代码,我无法确定您的需求,但通常,您可能会遇到一些可以忽略自我捕获的情况:

  • 当您需要非转义闭包时
  • 当父函数是类函数时(如 UIView.animate... )
  • 关于swift - [weak self] 情况下的快捷闭包语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67354229/

    54 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com