我有两个UIViewControllers具有按钮触发赛格瑞(模态)到彼此。 我想,如果发现这是造成任何内存泄漏而来回跳跃,我看到的是生活对象&&分配的内存是往上走,最终你会离开应用程序崩溃。 我没有任何代码一行 - 纯UIViewControllers工作。
我可能是做错了?
可能有我设置一些错误的项目设置?
我在读Profiler的statictics不好?
我是否需要做任何特殊的释放命令与塞格斯工作时?
我有两个UIViewControllers具有按钮触发赛格瑞(模态)到彼此。 我想,如果发现这是造成任何内存泄漏而来回跳跃,我看到的是生活对象&&分配的内存是往上走,最终你会离开应用程序崩溃。 我没有任何代码一行 - 纯UIViewControllers工作。
我可能是做错了?
可能有我设置一些错误的项目设置?
我在读Profiler的statictics不好?
我是否需要做任何特殊的释放命令与塞格斯工作时?
你没有使用模式正确塞格斯。 您已经实现了它的方式,当你Segue公司,而不是返回给你来自的情况下,你创建的每个视图控制器的新实例。 这就是为什么你的内存使用量继续增加。
iOS 6中之前,来处理这个正确的方法是:
1)定义的方法如viewController2Done
鉴于控制器1
2)在视图控制器2,创建一个名为属性delegate
类型的id
。
3)在prepareToSegue
用于视图控制器1,设置delegate
在视图控制器2至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
,瞧,你就大功告成了。