我正在尝试使用此代码生成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中放置一个断点,但是从未调用过。为什么会这样?
答案 0 :(得分:0)
我在最后几次迭代中看到图像写入失败,错误描述为“忙写入”。因此,我现在正在编写图像,以便只有当我的完成选择器被调用并且已经写入图像时,才会调用UIImageWriteToSavedPhotosAlbum来编写下一个图像。到目前为止,我已经能够在大约90分钟内将大约17000张图像保存到相机胶卷中。但是,这很慢?有什么办法可以加快速度吗?我可以并行写图像吗?