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

Jeesson_7

我从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()
            }
        }



      }

    }

本教程

瓦迪安

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我是否需要在导航控制器子视图中使用GADRequest()的单例?

来自分类Dev

如果我使用单例网络服务发出网络请求,是否需要使用[弱自我]?

来自分类Dev

在工厂类(C ++)中使用单例

来自分类Dev

我是否需要在单语言UWP应用程序中使用create_async?

来自分类Dev

是否需要在Flink中使用Windows?

来自分类Dev

UIView.animate():我是否需要在动画块中对自身进行弱引用?

来自分类Dev

我是否需要在实体框架6中使用POCO类

来自分类Dev

如何在python中使用参数创建单例类

来自分类Dev

在单例类中使用 EF 6 读取数据

来自分类Dev

使用单例类来跟踪用户信息是否合适?

来自分类Dev

在 Android 中管理对单例类的引用

来自分类Dev

为什么要在单例模式中使用struct和class函数?

来自分类Java

是否曾经需要销毁单例实例?

来自分类Dev

我是否需要在 recyclerView 或 recyclerView 中使用列表视图?

来自分类Java

是否需要在Streams中使用orElse(null)?

来自分类Dev

如果要在Django中使用Bootstrap,是否需要学习CSS?

来自分类Java

是否需要在onActivityResult()中使用super.onActivityResult()?

来自分类Dev

是否需要在ElasticSearch中使用负载均衡器?

来自分类Dev

我是否需要在synced(anyObject)块中使用AtomicInteger?

来自分类Dev

我是否需要在 ngOnDestroy 中使用 `complete()` takeUntil Subject?

来自分类Dev

是否需要在数组NavLink,Interface中使用?

来自分类Dev

是否需要在ORM组件中使用吸气剂功能?

来自分类Dev

我是否需要在类声明中使用常量值声明的成员数组上调用 delete[]?

来自分类Java

如何在单例类Spring Boot中使用服务(将不同的服务与“常规”类连接)

来自分类Dev

需要在If中使用VAR

来自分类Dev

使用引用和单例在类之间访问变量和方法

来自分类Dev

单例类的方法是否是线程安全的,方法内部是否使用了共享资源?

来自分类Dev

单例类中的静态类是否也是单例类?

来自分类Dev

我们是否需要在快速关闭中为弱变量显式使用捕获列表?

Related 相关文章

  1. 1

    我是否需要在导航控制器子视图中使用GADRequest()的单例?

  2. 2

    如果我使用单例网络服务发出网络请求,是否需要使用[弱自我]?

  3. 3

    在工厂类(C ++)中使用单例

  4. 4

    我是否需要在单语言UWP应用程序中使用create_async?

  5. 5

    是否需要在Flink中使用Windows?

  6. 6

    UIView.animate():我是否需要在动画块中对自身进行弱引用?

  7. 7

    我是否需要在实体框架6中使用POCO类

  8. 8

    如何在python中使用参数创建单例类

  9. 9

    在单例类中使用 EF 6 读取数据

  10. 10

    使用单例类来跟踪用户信息是否合适?

  11. 11

    在 Android 中管理对单例类的引用

  12. 12

    为什么要在单例模式中使用struct和class函数?

  13. 13

    是否曾经需要销毁单例实例?

  14. 14

    我是否需要在 recyclerView 或 recyclerView 中使用列表视图?

  15. 15

    是否需要在Streams中使用orElse(null)?

  16. 16

    如果要在Django中使用Bootstrap,是否需要学习CSS?

  17. 17

    是否需要在onActivityResult()中使用super.onActivityResult()?

  18. 18

    是否需要在ElasticSearch中使用负载均衡器?

  19. 19

    我是否需要在synced(anyObject)块中使用AtomicInteger?

  20. 20

    我是否需要在 ngOnDestroy 中使用 `complete()` takeUntil Subject?

  21. 21

    是否需要在数组NavLink,Interface中使用?

  22. 22

    是否需要在ORM组件中使用吸气剂功能?

  23. 23

    我是否需要在类声明中使用常量值声明的成员数组上调用 delete[]?

  24. 24

    如何在单例类Spring Boot中使用服务(将不同的服务与“常规”类连接)

  25. 25

    需要在If中使用VAR

  26. 26

    使用引用和单例在类之间访问变量和方法

  27. 27

    单例类的方法是否是线程安全的,方法内部是否使用了共享资源?

  28. 28

    单例类中的静态类是否也是单例类?

  29. 29

    我们是否需要在快速关闭中为弱变量显式使用捕获列表?

热门标签

归档