想象一个Swift对象A,它引用了对象B和C,并且该对象B也有对C的引用,如下所示:
Object A:
- Object B
- Object C
Object B:
- Object C
假设所有引用都很强,会导致内存泄漏吗?对象B对对象C的引用是否应该是弱的,以避免泄漏?
谢谢!
答案 0 :(得分:0)
在你的第一个例子中,只要B和C都没有强引用回A,就没有强引用周期,因此没有内存问题(至少使用此对象层次结构)。同样,在你的第二个例子中,只要C没有强引用回B,再没有强引用周期。
对象层次结构中的一般想法是父 应该对他们的孩子有强烈的引用,但如果孩子出于任何原因需要任何引用回到其父级(通常,你不要甚至不需要那个,孩子对父母的提及应该是弱的/无主的。
您只需要确保您没有从孩子回到父母的强引用的循环周期。