由于共享单例实例将始终存在,我们是否可以在该单例类中的所有闭包中安全地使用[unowned self]
?
答案 0 :(得分:5)
当然,这很安全。但这不是一个好理由。
是否使用弱引用或强引用应基于您正在编写的函数中的内存管理特性。例如,如果对象强烈引用闭包,则闭包应捕获对象的弱引用;并且这是安全的,因为没有其他人有关闭的引用,所以它只能在主对象存活时执行,等等。如果没有保留周期,并且闭包被赋予一个单独的API,以便它不被绑定到主对象的生命周期,然后闭包应该具有对主对象的强引用。 这种推理同样适用于单身人士和非单身人士。
答案 1 :(得分:0)
是的,单身人士对自己有强烈的引用,不能被处置。
基于此可以肯定地说,您可以安全地创建对它的弱引用或无主引用。
该类懒洋洋地第一次创建它的唯一实例 请求,然后确保没有其他实例可以 创建。单例类还可以防止调用者复制, 保留或释放实例。
测试它的一种简单方法是从主类测试。
在第一个(处置的)类和第二个(新创建的)类之间没有对单例的引用。