由于内存警告(Swift/Xcode),iOS设备上的应用程序崩溃

由于内存警告(Swift/Xcode),iOS设备上的应用程序崩溃,ios,xcode,swift,Ios,Xcode,Swift,该应用程序是一项调查,用户在不同的ViewController上回答一系列问题,其中一个变量会相应更改,并在应用程序末尾显示最终数字 代码非常基本,在模拟器上运行平稳,但在我的iPhone上测试时由于内存警告而崩溃 有三段代码可能会占用大量内存。有相当数量的动画图像(总共200个)是这样使用的: cloudAnimation.animationImages = [ UIImage(named: "Home Page Cloud Animation 01.png")!,

该应用程序是一项调查,用户在不同的ViewController上回答一系列问题,其中一个变量会相应更改,并在应用程序末尾显示最终数字

代码非常基本,在模拟器上运行平稳,但在我的iPhone上测试时由于内存警告而崩溃

有三段代码可能会占用大量内存。有相当数量的动画图像(总共200个)是这样使用的:

cloudAnimation.animationImages = [
        UIImage(named: "Home Page Cloud Animation 01.png")!,
        UIImage(named: "Home Page Cloud Animation 02.png")!,
        UIImage(named: "Home Page Cloud Animation 03.png")! ]

   cloudAnimation.animationDuration = 6
   cloudAnimation.startAnimating()
每一个新的ViewController都会向内存中添加大约50-60MB的数据,我认为可能是来自segues。每个屏幕上有2-3个按钮。根据单击的对象,变量会发生更改。这是代码:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "yesButton" {
            var DestViewController : YesViewController = segue.destinationViewController as! YesViewController
            DestViewController.percentChance = 0.02
        } else if segue.identifier == "noButton" {
            var DestViewController : NoViewController = segue.destinationViewController as! NoViewController
            DestViewController.percentChance = percentChance
        } else if segue.identifier == "goHome" {
            var DestViewController : HomeScreenViewController = segue.destinationViewController as!
            HomeScreenViewController
        }
    }
唯一可能会影响内存的另一件事是,每个视图都包含“percentChance”变量,它会被更改并从一个视图传递到另一个视图


这些示例中是否有任何一个看起来可能使用了大量内存?使用完ViewController或动画后,如何停用或取消初始化它们?非常感谢您的帮助。

您是否使用了任何仪器来测量应用程序的内存使用情况?您也可以尝试在
视图中将图像设置为
nil
将消失
并在
视图中构建图像将出现
读取:模拟器不会模拟设备的ram限制。所以一定要在设备上测试。我也开始在模拟器,它的快速和简单,如果你有多个屏幕,一个非常好的工作流程。但这只是一个糟糕的开始。我可以告诉你一两种减少内存使用的方法,但最好是完全掌握内存管理。正确的每一步都很重要谢谢大家,还有一个后续问题。当我处理完视图后,如何拒绝它们?