我正在使用以下代码在 iOS 应用程序中将大约 100 页呈现为 pdf,基本上是创建应用程序内容的屏幕截图:
...
UIGraphicsBeginPDFContextToFile(mainPath, currentFrame, nil);
for(Page *page in pages)
{
@autoreleasepool
{
MainViewController *viewCtrl = [[MainViewController alloc] initWithPage:page contentController:[ContentController singleton] inBackground:NO];
[self createPageWithView:viewCtrl.view];
}
}
UIGraphicsEndPDFContext();
-(void)createPageWithView:(UIView *)view
{
DLog(@"creating page...");
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIGraphicsBeginPDFPageWithInfo(currentFrame, nil);
CGContextRef pdfContext = UIGraphicsGetCurrentContext();
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[imageView.layer renderInContext:pdfContext];
}
这在中途某处内存不足。mainviewController 添加了几个子视图,没什么特别的。为什么会这样?自动释放池不应该清理使用的内存吗?