2011-03-08 19 views
5

Hola aquí es mi código para trazar pdf en CATiledlayermemoria CGContextDrawPDFPage fugas

- (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); 
} 

Todo está bien pero me dio la advertencia pérdida de memoria en línea siguiente

 CGContextDrawPDFPage(ctx, myPageRef); 

Aquí myPageRef es CGPDFPageRef

Respuesta

5

Tenía descargar el código de github y hacer algunos R & D y encontré que,

me olvidó liberar CGPDFPageRelease(myPageRef) en dealloc método de mi TiledView ..

y después de escribir el código de mi pérdida de memoria resuelto ....

// Clean up. 

- (void)dealloc { 
    CGPDFPageRelease(myPageRef); 
    [super dealloc]; 
} 
+0

Sólo debe hacerlo si lo retuvo en algún momento. Pero si solo estás haciendo 'CGPDFDocumentGetPage', obtienes un objeto de liberación automática y, por lo tanto, no deberías lanzarlo. (Obviamente, si lo retuvo, entonces, por supuesto, debe liberarlo como se sugiere en esta respuesta). – Rob

+0

https://stackoverflow.com/questions/46903182/cgcontextdrawpdfpage-memory-leak-app-crash – Ravindhiran