我有这个代码,而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];
}
}
答案 0 :(得分:1)
记忆警告不是错误的结果;它们是在iOS上运行的正常部分。你正在分配一堆东西,所以获得内存警告并不奇怪。
如果由于内存使用过多导致系统杀死您的应用程序时遇到问题,您可以考虑随着时间而不是循环填充这些图像。您可以通过NSOperationQueue或类似机制来完成此操作,以一次加载一个图像。
在任何情况下,您都可以使用“分配”或“活动监视器”工具来查看您的内存使用量是否在增长以及增加了多少。