0

IOS 6 でカタログ アプリケーションを使用しています。そのため、各ビューにいくつかの UIImageView があります。

他のビューに渡すと、古いイメージビューは解放されないと思います。だから私の本当のMem。300MBと仮想メモリになります。500MB になり、メモリの警告が表示されます。

以前使っていた

- (void)viewDidUnload
{
    [super viewDidUnload];
    itemImageView = nil;
    scrollView = nil;
}

もっとどうすればいいですか?私は何かいつものことを見逃していますか?

アップデート:

次のように ImageView を初期化しています。

    __block UIImageView *imageview = [[UIImageView alloc] init];

AFNetworking 経由で設定します。

 AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:imageRequest
                                                                                  imageProcessingBlock:nil
                                                                                             cacheName:@"nscache"
                                                                                               success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image){
                                                                                                   imageview.image = image;
                                                                                               }
                                                                                               failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error){ NSLog([error description]); }
                                              ];

アップデート:

ストーリーボードを使用しています。したがって、ある観点から見ると、私はセグエを使用しています。最初のコントローラーに戻ると、2 番目のコントローラーの viewDidUnload は呼び出されません。もう一度 2 番目のビューに移動すると、メモリが増加します。つまり、2 番目のビューのすべての画像ビューが再度読み込まれます。どこが間違っていますか?

更新 2: ストーリーボードとプッシュ セグエに関するものだと思い始めています。最初のビューに戻るために、プッシュ セグエを使用しています。2 番目のビュー コントローラーをポップする別のカスタム セグエを作成します。

4

1 に答える 1

0

Instruments を使用してメモリ使用量を監視している場合は、ゾンビがオフになっていることを確認してください (スキーム オプション)。デフォルトではゾンビは破棄されないため、メモリ使用量が爆発的に増加します。

于 2012-10-15T13:59:38.930 に答える