Утечка памяти в CGContextDrawPDFPage - PullRequest
5 голосов
/ 08 марта 2011

Здравствуйте, вот мой код для рисования PDF в CATiledlayer

- (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

Ответы [ 2 ]

5 голосов
/ 13 июня 2011

Я скачал код с github и сделал несколько исследований и обнаружил, что

Я забыл выпустить CGPDFPageRelease(myPageRef) в dealloc методе моего TiledView ..

и после написания этого кода моя утечка памяти устранена ....

 // Clean up.

 - (void)dealloc {
     CGPDFPageRelease(myPageRef);   
     [super dealloc];
 }
3 голосов
/ 11 августа 2011

Вызов

CGContextSetInterpolationQuality(context, kCGInterpolationHigh); 
CGContextSetRenderingIntent(context, kCGRenderingIntentDefault);

до того, как CGContextDrawPDFPage решил мою аналогичную проблему.

Кредиты идут на этот ответ Иоганна: CGContextDrawPDFPage занимает большой объем памяти

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...