1

実際の記事を表す一連の画像があるニュースアプリを構築しています。それらのいずれかをタップすると、メインの記事ページが開き、下部に関連記事を含むスクロール ビューがあります。

上記の下部スクローラーに関する奇妙な(おそらくCoreData関連の)問題を見つけました。記事ページを開くと、関連する記事を取得し、一連の記事を割り当てて、articleViewControllersそれらのビューをスクロール ビューに追加します。記事ページから切り替えると、スクローラーからすべてのビューを削除し、articleViewControllers. Instruments といくつかのヒープショット (記事をタップする前に 1 つ、メイン ページに戻るときにもう 1 つ) を使用すると、かなりの量のメモリが割り当てられたままになっていることがわかりました (画像を参照)。

ここに画像の説明を入力

ここに画像の説明を入力

オブジェクト以外のタブを表示すると、ほとんどの割り当てviewDidLoadが上記のメソッドの次のコード行で行われていることがわかりarticleViewControllerます。

    NSSet *tempSet = [[NSSet alloc] initWithSet:tempArticle.thumb];
    //tempArticle.thumb is the actual problem here
    [tempSet release]

tempArticleArticleNSManagedObject のサブクラスであるクラスのインスタンスです。この 2 行のコードをコメント アウトすると、すべて正常に動作するので、CoreData の使用方法が間違っていることが原因だと推測しています。

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

0

CoreDataは独自のメモリ管理を処理します。オブジェクトをメモリに保持したり、独自の気まぐれでオブジェクトをパージしたりする場合があります。

NSManagedObjectsに大きなBLOB(画像など)を格納しないことをお勧めします。代わりに、NSManagedObjectのファイルパス参照とともにイメージをディスクに保存します。

于 2012-08-29T18:55:31.103 に答える