2015-01-03 47 views
1

我是Swift編程的新手,真的對所有的專家有很高的期望。當創建一個簡單的應用程序時,我遇到了內存問題,我的應用程序崩潰了。下面是關於我的應用程序的更多細節。我怎樣才能阻止我的迅速應用程序崩潰

我的應用程序在工具欄中有一個圖像視圖,三個圖像和三個按鈕。我現在所有的應用程序都是按按鈕更改圖像。例如,如果你按下說button1,它會加載image1,如果你按下button2它會加載圖像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. 
    } 
} 
+4

你可以發佈崩潰日誌? –

+0

在iPad上的崩潰日誌或保存在MAC – Sid

+2

上的崩潰日誌是在xcode調試器窗口中看到的崩潰日誌。 –

回答

3

代碼與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) 
} 
+0

我試過了,現在點按按鈕不會改變圖像,我需要先保存iPAD上的圖像還是創建目錄?截至目前,所有三個圖像都保存在Xcode中的Images.xcassets下,我使用這個代碼作爲我的swift程序,我是否需要切換到Objective C以使用此代碼..感謝一噸Rob .. – Sid

+0

任何建議Rob? – Sid

0

我減少使用PNG 8格式在尺寸PS和它解決了我的問題..感謝所有的幫助:-)

相關問題