1

アプリのメモリに問題があります。

起動すると、アプリのドキュメントとデータは 212KB です

ViewControler A をプッシュした後、Facebook から非同期に大量の画像を TableView に読み込みます。

    UIButton *friendPhoto = [UIButton buttonWithType:UIButtonTypeCustom];
    [friendPhoto addTarget:self
                    action:@selector(friendPhotoWasClicked:)
          forControlEvents:UIControlEventTouchUpInside];
    [friendPhoto setFrame:CGRectMake(x, photoMargeY, photoSize, photoSize)];

    // GET IMAGE ASYNC
    NSURL *imageURL = [NSURL URLWithString:faceURL];
    [friendPhoto setImage:[UIImage imageNamed:@"default"]
                     forState:UIControlStateNormal];
        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
        dispatch_async(queue, ^{
            NSData *data = [NSData dataWithContentsOfURL:imageURL];
            UIImage *image = [UIImage imageWithData:data];
            dispatch_async(dispatch_get_main_queue(), ^{
                [friendPhoto setImage:image
                             forState:UIControlStateNormal];
            });
        });
    //}
    [cell.contentView addSubview:friendPhoto];

そして完璧に動作します!この時点で、ドキュメントとデータ 10MB

しかし、ViewController をポップし、ViewController の dealloc を呼び出す NSLog を確認した後、私のアプリはまだ 10MB あります。私は画像のキャッシュを作成していません。

なぜまだ10MBなのですか?どうすれば解決できますか?

4

1 に答える 1

2

データと画像のすべての保持/リリースを調べると役立つ場合があります。

オブジェクトの保持、解放、および自動解放が発生する場所を確認する必要がある場合は、インストゥルメントを使用します。

計測器で実行し、割り当てで「参照カウントの記録」をオンに設定します (オプションを設定するには、記録を停止する必要があります)。問題のコードを実行し、記録を停止し、関心のある ivar を検索し、ドリルダウンすると、すべての保持、解放、および自動解放が発生した場所を確認できます。

ここに画像の説明を入力

于 2013-02-04T02:09:00.693 に答える