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 或类似机制一次加载一个图像来完成此操作。

在任何情况下,您都可以使用“分配”或“活动监视器”工具来查看您的内存使用量是否正在增长以及增长了多少。

于 2012-07-19T22:53:21.377 回答