无主与弱

弱和无所有权用于解决内存泄漏和保留周期。两者都不会增加保留计数。

话虽如此,我们不会像弱者那样使用无人值守 因为,我会说要么我们不想弄乱功能,要么我们不想三思而后行,就像其他人一样,我确实拥有甚至没有单个无主变量的源代码。

最近,我有机会更多地了解这些术语并进行猜测,只要您知道何时以及如何放置它们,我发现的弱点无名者都非常简单易用。因此,在这里,我将帮助您找到何时以及如何 🙂


无人

要使用无主属性时应记住的重要点

·当另一个实例具有相同的生存时间或更长的生存时间时,可以使用无所有权。

以客户和信用卡为例。 在这里,没有客户就不能存在信用卡。 信用卡实例永远不会超过它所引用的客户,并且我们仅通过在初始化程序中传递客户实例来创建信用卡实例。 因此,我们可以绝对保证没有客户就不会存在此信用卡。

当客户为零时,客户和信用卡都将被释放。

当在闭包中使用时,未拥有的引用的行为就像它们是隐式解开的optionals.so,因此当您在闭包中使用它们时,您不必进行可选的链接,也不必解开它们。


每当引用被释放时,weak都会使指针无效,但无主不会这样做,因此可能导致指针悬空。

因为弱引用需要在运行时允许将其值更改为nil ,所以它们始终被声明为变量和可选

当在闭包中使用弱引用时,它们的作用类似于optionals.so,因此在闭包中使用弱引用时,必须对其进行可选的链接。


您是否想过闭包中[弱我][无主我]是什么意思。 它被称为CaptureList

好吧,方括号表示捕获列表,它只是一个数组 ,其中弱的self是其中的唯一对象。 作为一个数组,捕获列表不仅仅可以捕获弱的自我。 您可以捕获任意多的内容:

我希望这是有用的,如果您有任何疑问或需要澄清,我很想听听他们的意见!