Освободить память, используемую CGContextDrawPDFPage

Когда я анализировал свое приложение с помощью инструментов, я обнаружил, что данные, выделенные CGContextDrawPDFPage, не передаются немедленно. Поскольку моя программа получает много «предупреждений о памяти», я хотел бы освободить как можно больше памяти, но я не знаю, как освободить эту память.

Как вы можете видеть на http: // twitpic. com / 473e89 / full похоже, это связано с этим кодом

-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx{
    NSAutoreleasePool * tiledViewPool = [[NSAutoreleasePool alloc] init];
    CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0);
    CGContextFillRect(ctx, CGContextGetClipBoundingBox(ctx));
    CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform([self.superview.superview getPage],kCGPDFMediaBox,tiledLayer.bounds, 0, true);
    CGContextSaveGState (ctx);
    CGContextTranslateCTM(ctx, 0.0, tiledLayer.bounds.size.height);
    CGContextScaleCTM(ctx, 1.0, -1.0);
    CGContextConcatCTM (ctx, pdfTransform);
    CGContextClipToRect (ctx, CGPDFPageGetBoxRect([self.superview.superview getPage],kCGPDFMediaBox));
    CGContextSetInterpolationQuality(ctx, kCGInterpolationHigh);
    CGContextSetRenderingIntent(ctx, kCGRenderingIntentDefault);
    CGContextDrawPDFPage(ctx,[self.superview.superview getPage]);
    CGContextRestoreGState (ctx);
    UIGraphicsEndPDFContext();
    [tiledViewPool drain];
}

Я уже пытался обернуть его в AutoReleasePool, но это, похоже, не имеет никакого влияния. Снимок экрана сделан после освобождения TiledView (представления, которому принадлежит метод).

Надеюсь, кто-нибудь поможет мне уменьшить использование памяти.

6
задан Arie Timmerman 7 March 2011 в 11:18
поделиться