CALayer遇到麻烦

时间:2012-07-19 19:37:30

标签: ios xcode calayer

我有这个代码,而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];
    }
}

1 个答案:

答案 0 :(得分:1)

记忆警告不是错误的结果;它们是在iOS上运行的正常部分。你正在分配一堆东西,所以获得内存警告并不奇怪。

如果由于内存使用过多导致系统杀死您的应用程序时遇到问题,您可以考虑随着时间而不是循环填充这些图像。您可以通过NSOperationQueue或类似机制来完成此操作,以一次加载一个图像。

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