0

从 xcode执行操作时,我收到泄漏警告,Analyze警告如下图所示

在此处输入图像描述

但是,如果我Instrument用来检查,我根本不会收到“泄漏”的警告。图片如下所示 在此处输入图像描述

问题:我会不会漏水。

常见的.m

void drawLinearGradient(CGContextRef context, CGRect rect, CGColorRef startColor, CGColorRef  endColor) {
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGFloat locations[] = { 0.0, 1.0 };

    NSArray *colors = [NSArray arrayWithObjects:(__bridge id)startColor, (__bridge id)endColor, nil];

    CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef) colors, locations);

    CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
    CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));

    CGContextSaveGState(context);
    CGContextAddRect(context, rect);
    CGContextClip(context);
    CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
    CGContextRestoreGState(context);
    CGGradientRelease(gradient);
    //CGColorSpaceRelease(colorSpace);--------> this will fix leaking

}
4

1 回答 1

2
  • 展开那个小三角形,Xcode 会显示导致泄漏的执行路径

  • 是的,该代码正在泄漏色彩空间

  • 分配图确实看起来像泄漏,但是对于色彩空间来说这是非常陡峭的,除非你要创建很多它们!

  • 快照分析可能会有所帮助。

于 2013-04-04T18:12:47.860 回答