【问题标题】:How to avoid memory leaks with nested objects如何避免嵌套对象的内存泄漏
【发布时间】:2018-07-15 17:17:37
【问题描述】:

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

Object A:
- Object B
- Object C

Object B:
- Object C

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

谢谢!

【问题讨论】:

  • 没有参考/保留循环 ...

标签: swift memory-leaks retain-cycle


【解决方案1】:

在您的第一个示例中,只要 B 和 C 都没有对 A 的强引用,就没有强引用循环,因此没有内存问题(至少对于这个对象层次结构)。同样,在您的第二个示例中,只要 C 没有对 B 的强引用,就没有强引用循环。

对象层次结构中的一般概念是父对象应该对其子对象具有强引用,但如果子对象出于任何原因需要对父对象的任何引用(通常,您不需要'甚至不需要那个),孩子对父母的引用应该是弱的/无主的。

您只需要确保没有从子级到父级的强引用循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-27
    • 2020-05-13
    • 1970-01-01
    • 2015-08-27
    • 2018-04-08
    • 2013-06-24
    相关资源
    最近更新 更多