如何避免嵌套对象的内存泄漏

时间:2018-02-05 18:53:02

标签: swift memory-leaks retain-cycle

想象一个Swift对象A,它引用了对象B和C,并且该对象B也有对C的引用,如下所示:

Object A:
- Object B
- Object C

Object B:
- Object C

假设所有引用都很强,会导致内存泄漏吗?对象B对对象C的引用是否应该是弱的,以避免泄漏?

谢谢!

1 个答案:

答案 0 :(得分:0)

在你的第一个例子中,只要B和C都没有强引用回A,就没有强引用周期,因此没有内存问题(至少使用此对象层次结构)。同样,在你的第二个例子中,只要C没有强引用回B,再没有强引用周期。

对象层次结构中的一般想法是父 应该对他们的孩子有强烈的引用,但如果孩子出于任何原因需要任何引用回到其父级(通常,你不要甚至不需要那个,孩子对父母的提及应该是弱的/无主的。

您只需要确保您没有从孩子回到父母的强引用的循环周期。