在 Swift 的闭包中是否总是需要使用 [unowned self]?
大家好!我开始学习 Swift,遇到了闭包中内存管理的问题。我读了很多 Stack Overflow 上的文章,到处都说需要使用 `[weak self]` 或 `[unowned self]` 来避免 retain cycles。但我搞不清楚什么时候该用 `unowned`。
下面是一个例子:我有一个 `NetworkManager` 类,它加载数据并在完成后调用闭包。
```swift
class NetworkManager {
func fetchData(completion: @escaping (Data?) -> Void) {
DispatchQueue.global().async {
// 模拟加载
sleep(2)
let data = Data()
completion(data)
}
}
}
class ViewController: UIViewController {
let networkManager = NetworkManager()
func loadData() {
networkManager.fetchData { data in
// 处理数据
self.updateUI(with: data)
}
}
func updateUI(with data: Data?) {
// 更新界面
}
}