3

我一直在对我正在开发的应用程序进行内存分析,并注意到我的应用程序中的详细视图控制器被“放弃”(仍然驻留在内存中,但仍然存在有效的引用),直到一个新的视图控制器被推送到导航堆栈上. 我已经在设备上和模拟器中测试了这个,并遇到了同样的问题。

我在这里创建了一个示例项目,并在此处创建了一个演示该现象的视频。在dealloc详细视图控制器中,我放置了一条关于何时销毁视图控制器的日志消息。直到将新视图控制器放置到导航堆栈上之后才会执行此操作。

执行内存配置文件,视图控制器不会被释放,直到UISplitViewController调用内部的私有方法,_willShowCollapsedDetailViewController:inTargetController:

在此处输入图像描述

有什么我想念的吗?这是一个错误吗?如果不是,我如何确保从导航堆栈弹出时正确释放详细视图控制器?

这个问题存在于 iOS 89 中。

4

1 回答 1

0

折叠时,_willShowCollapsedDetailViewController保留细节控制器,_setPreservedDetailController以便在separateSecondaryViewControllerFromPrimaryViewController. 否则拆分视图的右侧将是空的灰色和悲伤的外观。因此,您所经历的是,当它保留新的时,旧的被释放并解除分配。

于 2018-08-08T09:09:44.747 回答