我正在使用XCode 6(Swift)创建一个应用程序,并且最近成功制作了一个不使用动画的自定义segue。我很快意识到,当在两个视图控制器(与自定义segue绑定在一起)之间切换时,应用程序内存使用情况(可通过XCode查看)似乎随着每个视图控制器切换而急剧增加。这是我需要担心的吗? Swift会自动注意这个内存增加,这样应用程序最终不会使用疯狂的数量,或者我做错了什么?
NoAnimationSegue.swift
import Foundation
import UIKit
@objc(NoAnimationSegue)
class NoAnimationSegue: UIStoryboardSegue {
override func perform () {
let src: UIViewController = self.sourceViewController as UIViewController
let dst: UIViewController = self.destinationViewController as UIViewController
src.presentViewController(dst, animated: false, completion: nil)
}
}
答案 0 :(得分:1)
当你从第一个视图控制器转到第二个视图控制器时,你可以presentViewController
,但是当你回到第一个视图控制器时,你不希望“#34;呈现"再次。当你"出现"一个视图控制器来自另一个视图控制器,它将第一个视图控制器保留在内存中,所以它就在那里,当你“解雇”时,它已经准备好了。第二个视图控制器返回第一个。
因此,如果您重复以循环方式从一个视图控制器呈现到另一个视图控制器的过程,您最终会在内存中看到多个视图控制器实例。如果你出现"从一个视图控制器转到另一个视图控制器,然后您将要放松或关闭以返回到第一个视图控制器。
或者,如果您不想使用当前/关闭模式,如果您想在视图控制器之间来回跳转,也可以使用标签栏控制器。或者您可以使用页面视图控制器。或者,您可以使用自己的自定义容器视图控制器,并在来回跳转时替换子视图控制器。
但请记住,如果您从一个视图控制器出现或推送到另一个视图控制器,那么您将不得不解雇或弹出以返回。