故事板会导致内存泄漏

我有两个UIViewControllers,按钮互相触发segue(模态)。 我想发现,当来回跳跃时是否会导致任何内存泄漏,我发现Living Object &&分配的内存正在上升,最终会给应用程序崩溃带来什么。 我没有任何单行代码 – 使用纯UIViewControllers。 故事板

剖析器1

探查者2项目的设置

我可能做错了什么?
我可以在项目设置中设置错误吗?
我是否正在严格阅读探查者的统计数据?
使用segues时是否需要制作任何特殊的发布命令?

您没有正确使用模态segues。 实现它的方式是,当您进行segue而不是返回到来自的实例时,您将创建每个视图控制器的新实例。 这就是为什么你的内存使用量继续增加。

在iOS 6之前,处理此问题的正确方法是:

1)在视图控制器1中定义诸如viewController2Done的方法
2)在视图控制器2中,创建一个名为delegate的属性id
3)在prepareToSegue视图控制器1中,将视图控制器2中的delegate设置为self
4)在视图控制器2中,当是时候返回到视图控制器1时,调用[delegate viewController2Done]
5)在viewController2Done调用[self dismissModalViewControllerAnimated:YES]

此方法仍适用于iOS 6,但也有一个新的unwind segue可以替代使用。 要使用它,您可以在视图控制器1中定义一个方法,如下所示:

Objective-C的:

 - (IBAction)unwindFromViewController2:(UIStoryboardSegue *)segue { NSLog(@"and we are back"); } 

迅速:

 @IBAction func unwindFromViewController2(_ segue: UIStoryboardSegue) { print("and we are back") } 

然后,您可以控制从视图控制器2中的按钮拖动到故事板中视图控制器上方栏中的橙色退出图标。 在弹出窗口中,你选择unwindFromViewController2 ,瞧,你已经完成了。

在此处输入图像描述