我正在尝试理解xcode调试工具在检测保留周期方面的工作原理。 我有一个简单的父和子视图控制器都保持彼此的引用。 并且在执行应用程序打开关闭VC几次后,当我打开调试工具时,它既没有显示保留周期也没有运行时问题。 请在下面找到代码示例和xcode调试工具的附加截图
true
答案 0 :(得分:-1)
[编辑,真正的答案] 我认为你只是误读了可视化调试器。仔细查看屏幕截图,这些内存图实际上归类为保留周期。
但请注意:
要真正浪费记忆,您需要放弃对父级 UIViewController
的所有引用。只要父级仍然可访问,父级和子级都可以从某个地方访问,即使它们具有保留周期。
(如果你用一个新VC替换子VC,上一个周期实际上已被破坏,而被替换为一个新的。通过不断更新child
VC属性,你'不要浪费任何东西。)
想象一下(所有箭头都很强大):
V--------------------
RootWindow --> GrandParentVC --> ParentVC --> ChildVC --^
这不是问题。
现在假设我们取代了GrandParentVC。创建了一个无法访问的循环:
RootWindow --> ANewVC
V--------------------
ParentVC --> ChildVC --^