【发布时间】:2013-01-15 05:52:37
【问题描述】:
我有以下代码来阅读 PDF 页面。
问题是每次我阅读仪器分析的页面时都会增加大约 1MB 的 CFData (store)?任何帮助表示赞赏。
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context;
context = CGBitmapContextCreate(NULL,
width,
height,
8,
width* 4,
colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
CGContextClipToRect(context, CGRectMake(0, 0, pageSize.width*2, pageSize.height*2));
CGContextSaveGState(context);
CGPDFPageRef page = CGPDFDocumentGetPage(pdf, index + 1);
CGRect rect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
CGRect rectClip = CGContextGetClipBoundingBox(context);
CGAffineTransform transform = aspectFit(rect,rectClip);
CGContextConcatCTM(context, transform);
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGContextSetRenderingIntent(context, kCGRenderingIntentDefault);
CGContextDrawPDFPage(context, page);
CGContextRestoreGState(context);
CGImageRef image = CGBitmapContextCreateImage(context);
CGContextRelease(context);
UIImage *img = [UIImage imageWithCGImage:image];
CGImageRelease(image);
【问题讨论】:
-
我想知道增加 1MB 是否是由于为每个页面创建了自动释放的“
UIImage”对象?其他所有内容似乎都被明确发布了。 -
我将创建的图像(上面代码中的“img”)添加到视图后发布
-
你是从服务器下载数据
-
你在设备上试过了吗?如果您继续运行此代码,它会崩溃吗?我还建议尝试从模拟器菜单发送内存警告,看看之后是否有变化。
标签: ios objective-c