xcode保留周期未在内存图中显示

时间:2017-08-27 17:05:49

标签: swift xcode memory-management memory-leaks retain-cycle

我正在尝试理解xcode调试工具在检测保留周期方面的工作原理。 我有一个简单的父和子视图控制器都保持彼此的引用。 并且在执行应用程序打开关闭VC几次后,当我打开调试工具时,它既没有显示保留周期也没有运行时问题。 请在下面找到代码示例和xcode调试工具的附加截图

true

ChildViewController

ParentViewController

1 个答案:

答案 0 :(得分:-1)

[编辑,真正的答案] 我认为你只是误读了可视化调试器。仔细查看屏幕截图,这些内存图实际上归类为保留周期

但请注意:

要真正浪费记忆,您需要放弃对父级 UIViewController的所有引用。只要父级仍然可访问,父级和子级都可以从某个地方访问,即使它们具有保留周期。

(如果你用一个新VC替换子VC,上一个周期实际上已被破坏,而被替换为一个新的。通过不断更新child VC属性,你'不要浪费任何东西。)

想象一下(所有箭头都很强大):

                                    V--------------------
RootWindow --> GrandParentVC --> ParentVC --> ChildVC --^

这不是问题。

现在假设我们取代了GrandParentVC。创建了一个无法访问的循环:

RootWindow --> ANewVC

   V--------------------
ParentVC --> ChildVC --^