gpt4 book ai didi

swift - 是否需要在单例类中使用弱引用?

转载 作者:行者123 更新时间:2023-12-05 01:31:20 25 4
gpt4 key购买 nike

我看到了 raywenderlich 的教程,作者给出了一些关于处理单例​​线程问题的好技巧。但是当在单例类中使用闭包时,他使用的是“弱”引用循环。是否真的需要如此,因为该类是单例的,它应该总是有一个实例是对的吗?

    final class PhotoManager {
private init() {}
static let shared = PhotoManager()

private var unsafePhotos: [Photo] = []

let concurrentPhotoQueue = DispatchQueue(label: "com.jeesson.googlypuff.photoQueue", attributes: .concurrent)
var photos: [Photo] {
var photoCopy:[Photo]!
concurrentPhotoQueue.sync {
photoCopy = self.unsafePhotos
}
return photoCopy
}

func addPhoto(_ photo: Photo) {

// Do we need 'weak self here.. and why?
concurrentPhotoQueue.async(flags: .barrier) {[weak self] in
// 1
guard let self = self else {
return
}
self.unsafePhotos.append(photo)
DispatchQueue.main.async { [weak self] in
//self?.postContentAddedNotification()
}
}



}

}

The tutorial

最佳答案

DispatchQueue 闭包的情况下,根本不添加任何捕获列表。

DispatchQueue 闭包不会导致保留周期,因为 self 不拥有它们。

基本上不需要单例对象内的捕获列表,因为单例永远不会被释放。

关于swift - 是否需要在单例类中使用弱引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58286467/

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