2017-12-09 7 views
-2

目標:iOSアプリがクラッシュイメージをロードするとき

  1. は、プログラム(以下のコードを参照)Assets.xcassetsフォルダからメインストーリーボードでImageViewのに最初の画像(おおよそ94キロバイト)をロード - 完全
  2. 動作その後、元のUIImageに2番目の画像(同じサイズ)を読み込むと、iOSアプリがクラッシュします。

ここでは私のコードです:

mainImageView.image = UIImage(named:"FirstImage.png") // load first image, no issues 

あなたがプログラムで同じUIImageに第2の画像をロードする場合、それは、デバイスがメモリ不足の警告をスローする原因とiOSアプリをクラッシュ:REA後

mainImageView.image = UIImage(named:"SecondImage.png") // load second image 
+1

私たちにスタックトレースを表示してください。 –

+1

2番目の画像の読み込みの周りにコードを表示してください。エラーは他の場所にあるはずです – Vimal

答えて

0

を:鼎SO及びその他の物品の回答数(下記参照)、アニメーション配列に複数の画像をロードする際にメモリを管理するための最良の方法は、ここでの資料を参照してください。代わりに UIImage(named:"FirstImage.png")

contentsOfFile: imageNameを使用することです

http://www.alexcurylo.com/2009/01/13/imagenamed-is-evil/

そして第二Appleは次のように述べている:

マッチング画像オブジェクトがすでにキャッシュ内に されていない場合、このメソッドはイメージDATを探し出し、ロードディスクまたは利用可能な資産カタログから を抽出し、結果のオブジェクト を返します。システムは、いつでもメモリを解放するために、 にキャッシュされた画像データをパージすることができる。パージは、 キャッシュにあるが、現在使用されていないイメージに対してのみ発生します。 iOS 9以降では、この メソッドはスレッドセーフです。特別な考慮事項 ファイルが1度しか表示されないことを確認したい場合、 がシステムのキャッシュに追加されないようにするには、imageWithContentsOfFile:を使用して イメージを作成する必要があります。これにより、システムイメージキャッシュから一度だけ使用する イメージが保持され、メモリの改善に役立ちます。 アプリケーションの特性を使用します。あなたはまた、次の関数を作成することができます警告メモリーを受けて

https://developer.apple.com/documentation/uikit/uiimage/1624146-init

最後に、:

func applicationDidReceiveMemoryWarning(application: UIApplication) { 
     NSURLCache.sharedURLCache().removeAllCachedResponses() 
    } 

希望、これは他の誰かを助け:)

関連する問題