你好,这是我在CATiledlayer中绘制pdf的代码
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0);
CGContextFillRect(ctx, CGContextGetClipBoundingBox(ctx));
CGContextTranslateCTM(ctx, 0.0, layer.bounds.size.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(myPageRef, kCGPDFCropBox, layer.bounds, 0, true));
CGContextDrawPDFPage(ctx, myPageRef);
}
一切顺利,但我在下一行中收到内存泄漏警告
CGContextDrawPDFPage(ctx, myPageRef);
此处myPageRef为CGPDFPageRef
答案 0 :(得分:5)
我从github下载了代码并制作了一些R& D并发现了
我忘了在我的TiledView的CGPDFPageRelease(myPageRef)
方法中发布dealloc
..
写完这段代码后,我的内存泄漏就解决了......
// Clean up.
- (void)dealloc {
CGPDFPageRelease(myPageRef);
[super dealloc];
}
答案 1 :(得分:3)
致电
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGContextSetRenderingIntent(context, kCGRenderingIntentDefault);
之前CGContextDrawPDFPage
解决了我的类似问题。
致于约翰恩的回答: CGContextDrawPDFPage taking up large amounts of memory