gpt4 book ai didi

swift - 为什么 Swift 不自动处理内存泄漏?

转载 作者:行者123 更新时间:2023-11-30 10:31:16 26 4
gpt4 key购买 nike

当我开始开发 Swift 代码时,我没有处理内存泄漏的经验,所以我花了一些时间才弄清楚什么是保留周期,什么是 ARC,以及为什么我应该使用 weakunowned 在我的闭包中创建了这些保留周期。

默认情况下,我总是在引用 self 的闭包中添加这段代码:

class MyController: UIViewController {
var myClosure: (Data?, Error?)?

override viewDidLoad() {
self.myClosure = { [weak self] (data, err) in
guard let self = self else { return }
self.present(someVC, animated: true)
}
}
}

该代码非常常见,使用此 weak 修饰符并展开 self 几乎是默认代码。

这让我产生疑问。如果我必须始终在引用 self 的代码中添加一个 weak self 并且不允许该类被 deinit 为什么 Apple 不将其设为该语言的默认行为所以我们不需要在我们的代码库中到处重复这个代码?

最佳答案

在闭包中引用 self 时,不必总是使用 weak self

但在这种特殊情况下,您确实必须,它是 explained here

关于swift - 为什么 Swift 不自动处理内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59164965/

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