Когда я анализировал свое приложение с помощью Instruments, я обнаружил, что данные, выделенные 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 (представление, к которому относится метод) освобожден.
Я надеюсь, что кто-то может помочь мне уменьшить использование памяти.