小编Ari*_*man的帖子

释放CGContextDrawPDFPage使用的内存

当我用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];
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试在它周围包装一个AutoReleasePool,但这似乎没有任何影响.屏幕截图是在TiledView(方法所属的视图)被释放后拍摄的.

我希望有人可以帮我减少内存使用量.

iphone cocoa-touch catiledlayer ios

6
推荐指数
1
解决办法
2607
查看次数

标签 统计

catiledlayer ×1

cocoa-touch ×1

ios ×1

iphone ×1