UISplitViewController:放弃内存,直到另一个VC被推入导航堆栈?

时间:2015-10-06 00:35:07

标签: ios abandoned-memory

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

我创建了一个示例项目here和一个展示现象here的视频。在详细视图控制器的dealloc中,我放置了视图控制器被销毁时的日志消息。在将新视图控制器放置到导航堆栈之前,这不会执行。

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

enter image description here

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

iOS 8 9中存在此问题。

1 个答案:

答案 0 :(得分:0)

折叠时,_willShowCollapsedDetailViewController将通过_setPreservedDetailController保留细节控制器,以便在separateSecondaryViewControllerFromPrimaryViewController期间旋转旋转控制器以使其变为横向时可以将其移动到辅助位置。否则,分割视图的右侧将是空的灰色且看起来很悲伤。因此,您遇到的是,当它保留新的时,旧的就被释放并取消分配了。