一段时间后,Xcode终止我的图像生成应用程序

时间:2015-10-22 15:29:54

标签: ios uiimage core-graphics

我正在尝试使用此代码生成60,000张图片

-(void)createImages
{
    [self.actIndicator startAnimating];
    for(int i = 0; i < kImgCount; i++) {
        CGSize imageSize = CGSizeMake(50, 50);
        UIColor *fillColor = [self randomColor];
        UIGraphicsBeginImageContextWithOptions(imageSize, YES, 0);
        CGContextRef context = UIGraphicsGetCurrentContext();
        [fillColor setFill];
        CGContextFillRect(context, CGRectMake(0, 0, imageSize.width,  imageSize.height));
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
        self.imagesCreated++;
        NSLog(@"%ld", (long)self.imagesCreated);
    }
    [self.actIndicator stopAnimating];
}

这里kImgCount等于60,000。一段时间后,Xcode会终止与应用程序的连接。然而,将kImgCount降低到14000可以正常运行。此外,完成选择器@selector(image:didFinishSavingWithError:contextInfo :)永远不会被调用。我尝试在didRecieveMemoryWarning中放置一个断点,但是从未调用过。为什么会这样?

1 个答案:

答案 0 :(得分:0)

我在最后几次迭代中看到图像写入失败,错误描述为“忙写入”。因此,我现在正在编写图像,以便只有当我的完成选择器被调用并且已经写入图像时,才会调用UIImageWriteToSavedPhotosAlbum来编写下一个图像。到目前为止,我已经能够在大约90分钟内将大约17000张图像保存到相机胶卷中。但是,这很慢?有什么办法可以加快速度吗?我可以并行写图像吗?