I have two UIViewControllers with buttons triggering segue (modal) to each other. I wanted to discover if that's causing any memory leaks while jumping back and forth and I see that Living Object && allocated memory is going up, what eventually would leave to app crash. I don't have any single line of code - working with pure UIViewControllers.
我可能做错了什么?
我是否在项目设置中设置了错误?
我读分析器的统计数据是否很糟糕?
使用 segue 时是否需要执行任何特殊的发布命令?
您没有正确使用模式转场。按照您实现它的方式,当您进行segue时,您将创建每个视图控制器的新实例,而不是返回到您来自的实例。这就是您的内存使用量持续增加的原因。
在 iOS 6 之前,处理这个问题的正确方法是:
1)定义一个方法,例如viewController2Done
在视图控制器 1 中
2)在视图控制器2中,创建一个名为的属性delegate
类型的id
.
3) in prepareToSegue
对于视图控制器 1,设置delegate
在视图控制器 2 中self
4)在视图控制器2中,当需要返回视图控制器1时,调用[delegate viewController2Done]
5) in viewController2Done
call [self dismissModalViewControllerAnimated:YES]
这个方法在iOS 6中仍然有效,但是还有一个新的unwind segue
可以用它来代替。要使用它,您可以在视图控制器 1 中定义一个方法,如下所示:
Objective-C:
- (IBAction)unwindFromViewController2:(UIStoryboardSegue *)segue
{
NSLog(@"and we are back");
}
Swift:
@IBAction func unwindFromViewController2(_ segue: UIStoryboardSegue) {
print("and we are back")
}
然后,您可以控制从视图控制器 2 中的按钮拖动到故事板中视图控制器上方栏中的橙色退出图标。在弹出窗口中,您可以选择unwindFromViewController2
瞧,你就完成了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)