0

私はこのコードを持っており、XCode Analyzeは警告を発行しませんが、コンソールでメッセージを受け取るたびに次のようになります。

2012-07-19 23:15:35.122 AttachIt [5725:907]メモリ警告を受け取りました。

私の間違いはどこにありますか、それを指摘してください。

for(int j=0;j<images;j++){
    @autoreleasepool {
        NSInteger currentRow = 0;

        for(int k = 0; k<i;k++)
            currentRow = currentRow + [[assetGroups objectAtIndex:k] numberOfAssets];

        asset = [assets objectAtIndex:j+currentRow];
        float size = [self getRandomNumberBetweenMin:60.0 andMax:65.0];
        CGRect rect;
        if(iPad)
            rect = CGRectMake(10+j*35.5, 75-size, size, size);
        else
            rect = CGRectMake(10+j*26, 75-size, size, size);
        UIImageView *temp = [[UIImageView alloc] initWithImage:[UIImage imageWithCGImage:[asset thumbnail]]];
        temp.frame = rect;
        temp.layer.backgroundColor = [UIColor blueColor].CGColor;
        temp.layer.shadowOffset = CGSizeMake(0, 3);
        temp.layer.shadowRadius = 5.0;
        temp.layer.shadowColor = [UIColor blackColor].CGColor;
        temp.layer.shadowOpacity = 0.8;
        temp.layer.masksToBounds = NO;
        temp.layer.borderColor = [[UIColor whiteColor] CGColor];
        temp.layer.borderWidth = 2;
        [temp setTransform:CGAffineTransformMakeRotation(degreesToRadians([self getRandomNumberBetweenMin:-5 andMax:5]))];
        temp.layer.shouldRasterize = TRUE;
        [albumRow addSubview:temp];
    }
}
4

1 に答える 1

1

メモリ警告は間違いの結果ではありません。これらはiOSでの実行の通常の部分です。あなたはたくさんのものを割り当てているので、メモリ警告を受け取ることは驚くべきことではありません。

過剰なメモリ使用量が原因でアプリがシステムによって強制終了されるという問題が発生している場合は、ループではなく、時間の経過とともにそれらの画像を取り込むことを検討してください。これは、NSOperationQueueまたは同様のメカニズムを使用して、一度に1つずつイメージをロードすることで実現できます。

いずれの場合も、「割り当て」または「アクティビティモニター」の機器を使用して、メモリ使用量が増加しているかどうか、およびその量を確認できます。

于 2012-07-19T22:53:21.377 に答える