[英]Swift strong reference cycles with arrays
如果我有一個類A,它的變量x是類B的數組,而類B的父類始終有一個變量y,則如何設置類以避免強引用循環。 如果我放錯了
class A {
weak var x = [B]
...}
(即使我做到了[B]?),這似乎也是錯誤的放置方式
class B {
weak var y = A
...}
因為B級應始終具有“父級” A級。
我想這是一個標准設置,所以想知道正常模式。 任何幫助,不勝感激。
如果B
總是有一個父母,並且父母將確保它不會在其子之前消失,那么您可以使用unowned
而不是weak
。 就是說, unowned
有些危險,因為如果您做錯了,它將崩潰。
如果您想更安全一些(或者您不能保證孩子將永遠在父母面前被摧毀),那么正確的模式就是對父母的弱引用。
關鍵在於短語“應始終有一個'父母'”。 如果你的意思應該再使用弱。 如果您的意思是必須使用unowned
。
雖然可以創建“弱數組”,但這不是一個很好的用法。 在您的示例中,父母“擁有”(強烈引用並保持生命)他們的孩子。 該系統中的孩子沒有“擁有”父母,因此不應有很強的參考意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.