【问题标题】:How can I stop my swift app from crashing如何阻止我的 swift 应用程序崩溃
【发布时间】:2015-03-01 11:17:25
【问题描述】:

我是 Swift 编程新手,对所有专家寄予厚望。在创建一个简单的应用程序时,我遇到了内存问题并且我的应用程序崩溃了。以下是有关我的应用程序的更多详细信息..

我的应用在工具栏中有一个图像视图、三个图像和三个按钮。我的应用程序现在所做的就是通过按下按钮更改图像。例如,如果你按下按钮 1,它将加载图像 1,如果你按下按钮 2,它将加载图像 2,如果你按下按钮 3,它将加载图像 3。

这个应用程序在 1 个周期后崩溃,就像我可以点击所有三个按钮一样,它会工作,但是如果我在之后点击任何按钮,它就会崩溃。

我正在 iPad mini 上进行测试。在模拟器上工作得很好。任何帮助将不胜感激。我去某个地方 UIImage (named:) 可能是一个问题,但我不知道如何用 Swift 中的其他任何东西替换它。

这是它的代码

import UIKit

class ViewController: UIViewController
{
   @IBOutlet weak var TestImage: UIImageView!

   @IBAction func Button1(sender: AnyObject)
   {
      TestImage.image = UIImage (named: "Image1.jpg")

   }

   @IBAction func Button2(sender: AnyObject)
   {
      TestImage.image = UIImage (named: "Image2.jpg")
   }

   @IBAction func Button3(sender: AnyObject)
   {
      TestImage.image = UIImage (named: "Image1.jpg")
   }

   override func viewDidLoad()
   {
      super.viewDidLoad()
      // Do any additional setup after loading the view, typically from a nib.
   }

   override func didReceiveMemoryWarning()
   {
      super.didReceiveMemoryWarning()
      // Dispose of any resources that can be recreated.
   }
}

【问题讨论】:

  • 你能发布崩溃日志吗?
  • iPad 或 MAC 上保存的崩溃日志
  • 在 xcode 调试器窗口中看到的崩溃日志。
  • 无关,但请参阅Cocoa naming conventions。为 Objective-C 编写,但也是 Swift 命名约定的良好指南。
  • 您好 Hashmat,谢谢您的回复 :-),调试器输出窗口中没有日志。我得到的任何日志都在所有输出下,这只是告诉我 2015-01-03 20:10:05.328 TCDS App[972:27690] 收到内存警告。

标签: ios image ipad swift memory


【解决方案1】:

UIImage(named: name) 的问题在于它缓存了图像。正如the documentation 所说:

如果您有一个只显示一次的图像文件并希望确保它不会被添加到系统的缓存中,则应改为使用imageWithContentsOfFile: 创建图像。这将使您的一次性图像远离系统图像缓存,从而可能改善您应用的内存使用特性。

因此,如果您因系统缓存中图像的大小/数量而出现内存问题,您可以使用UIImage(contentsOfFile: path) 而不是UIImage(named: name):

if let path = NSBundle.mainBundle().pathForResource("Image1", ofType: "jpg") {
    TestImage.image = UIImage(contentsOfFile:path)
}

【讨论】:

  • 我试过了,现在点击按钮不会改变图像,我需要先将图像保存在iPAD上还是创建目录?到目前为止,所有三个图像都保存在 Xcode 中的 Images.xcassets 下,我正在将此代码用于我的 swift 程序,我是否需要切换到 Objective C 才能使用此代码.. 非常感谢 Rob..
【解决方案2】:

我在 ps 中使用 png 8 格式减小了大小,它为我解决了这个问题。谢谢大家的帮助 :-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多