0

私の最初のアプリである iPhone 用に開発されたカタログがあります。そのため、カタログに 55 枚を超える写真があると、メモリ リークが発生し、アプリがクラッシュするという問題が発生します。(クラッシュするときは説明します)

すでに Leaks Performance Tools でテストしてリークを正常に修正しましたが、アプリはまだクラッシュします。

私のデータ クラスには 5 つの NSMutableArrays があります。1 つは、Portrait 用に 50 個の UIImage 要素を持っています。2 番目には、Landscap 用の 25 個の UIImage 要素があります (カタログでは、1 つの横長の画像に 2 つの縦長の画像が使用されます)。その他には、縦配列から横配列への参照画像位置用に 50 NSNumber があります。他の 2 つには、(1) 名前と (2) アイコン画像のアドレスを持つ 50 個の NSString 要素があります。AppDelegate (アプリケーションのロード) で 1 つの Data クラス オブジェクトが作成されます。

Portrait でカタログを開始し、Portrait Array (UIImages を使用) を渡してビューを作成します。デバイスが左に曲がると、ランドスケープ配列を渡してビューを再作成します (古いビューを解放します)。xCodeでは、すべて正常に動作します!!! デバイスで、(ビューを再作成するために) デバイスを左に回すと、時々 (他のアプリを開いているときに気付きました)、アプリが次のメッセージでクラッシュします。

このメッセージはメモリ リークの問題に言及していることを知っているので、私の質問は次のとおりです。

SQLite を使用してデータを (実際には NSMutableArrays に) 格納すると、メモリ パフォーマンスが向上しますか? 私はiPhone用のSQLiteの初心者です。データを保存するための他のソリューションはありますか?

皆さん、ありがとうございました!!!

4

2 に答える 2

0

私はソリューションとしてSQLiteが好きです。事前入力された DB を提供するのは簡単です。さらに、レコードを追加/削除/更新できるいくつかのメソッドにアプリをフックするだけです。

問題は SQLite では解決されません。問題はメモリ管理です。データをどこに保存するかは問題ではありません。

表示と保存という 2 つの懸念事項を分離します。表示が正しく機能するようにしてから、データをどこに保存するかを考えてください。

于 2011-04-13T21:32:56.687 に答える
0

この質問はNSMutableArrays vsではなくSQLite、メモリ使用量に関するものです。通常、 は大量のUIImageメモリを消費するため、不要な場合 (通常は表示されていない場合) に解放する必要があります。アプリケーションのリークはゼロかもしれませんが、それでもクラッシュします。UIApplicationDidReceiveMemoryWarningNotification通知に登録し、それに応じて行動する必要があります。UIViewControllers は既に応答しており- (void)didReceiveMemoryWarning、オーバーライドできます。メモリを解放する必要がある場合に備えて、これらの画像をディスクに保存するには、SQLite または私が推奨するものを使用できます。キャッシュ フォルダーを作成するだけです。

于 2011-04-13T21:31:36.000 に答える