繁体   English   中英

情节提要串扰导致内存泄漏

[英]Storyboard segues causing memory leaks

我有两个带有按钮的UIViewControllers,它们相互触发segue(模态)。 我想发现这是否在来回跳跃时引起任何内存泄漏,并且我发现Living Object &&分配的内存正在增加,最终将导致应用程序崩溃。 我没有任何一行代码-使用纯UIViewControllers。 故事板

分析器1

探查器2项目的设置

我可能做错了什么?
我可以在项目设置中设置一些错误吗?
我是否认真阅读了探查器的静力学?
使用segue时是否需要执行任何特殊的发布命令?

您没有正确使用模式搜索。 实现它的方式是,在查询时正在创建每个视图控制器的新实例,而不是返回到原来的实例。 这就是为什么您的内存使用量持续增加的原因。

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

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

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

目标C:

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

迅速:

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

然后,您需要控制从视图控制器2中的按钮拖动到情节提要中视图控制器上方栏中橙色的退出图标。 在弹出窗口中,您将选择unwindFromViewController2然后完成。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM