从xcode执行Analyze
时收到泄漏警告,警告如下图所示
但是,如果我使用Instrument
进行检查,我对“泄漏”完全没有任何警告。图片如下所示
问题:我是否有泄漏。
Common.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
}
答案 0 :(得分:2)
展开那个小三角形,Xcode会显示导致泄漏的执行路径
是的,代码正在泄漏色彩空间
Allocations图确实看起来像是泄漏,但是对于颜色空间来说这是非常陡峭的,除非你正在创建很多它们!
heapshot analysis可能会有所帮助。