Ios 我有没有漏水

Ios 我有没有漏水,ios,objective-c,memory-leaks,Ios,Objective C,Memory Leaks,我从xcode执行分析时收到泄漏警告,该警告如下图所示 但是,如果我使用仪器进行检查,则不会收到任何“泄漏”警告。图片如下图所示 问题:我有没有漏水 普通的 void drawLinearGradient(CGContextRef context, CGRect rect, CGColorRef startColor, CGColorRef endColor) { CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

我从xcode执行
分析时收到泄漏警告,该警告如下图所示

但是,如果我使用
仪器
进行检查,则不会收到任何“泄漏”警告。图片如下图所示

问题:我有没有漏水

普通的

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

}
  • 展开这个小三角形,Xcode将向您显示导致泄漏的执行路径

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

  • 这个分配图看起来确实像是一个漏洞,但对于颜色空间来说,这是非常陡峭的,除非你创建了很多颜色空间

  • 可能会有帮助


共享代码,您的类几乎肯定会泄漏。分析器中出现错误的概率非常低。“仪器中的泄漏不是完美的。”苏尔坦说,“如果我听过的话,那就是错误的信息。”。仪器太好了,NSObject不得不隐藏一些内存管理内部构件,以防it@George当前位置请看我的OP。它是否正在执行?如果代码不运行,它就不会泄漏。