2013-09-27 24 views
2

我不明白,如何解决问题? 我使用“分析”导致我的程序崩溃,由于内存问题,并且七个类似符号中的第一个是“存储到Signalline中的对象的潜在泄漏”,与CGContextStrokePath(signalContext)相连;在循环中使用CGGraphics时物体的潜在泄漏

- (void)drawHorizoLines{ 
for(int i = 1; i < self.frame.size.width/_sw;i++){ 
    CGContextRef signalContext = UIGraphicsGetCurrentContext(); 
    CGMutablePathRef signalLine = CGPathCreateMutable(); 

    CGContextSetLineWidth(signalContext, 0.4); //LineWidth 
    CGContextBeginPath(signalContext); 
    CGContextSetStrokeColorWithColor(signalContext, [UIColor purpleColor].CGColor); 
    CGPathMoveToPoint(signalLine, 0, 0, i*_rowHeigth + _sbd/2);//Startpoint 
    CGPathAddLineToPoint(signalLine, 0, self.frame.size.width, i*_rowHeigth + _sbd/2); 
    CGContextAddPath(signalContext, signalLine); 

    //CGContextClosePath(signalLine); didnt work 
    CGContextStrokePath(signalContext); 
    //CGContextRelease(signalContext); didnt work 
} 

}

回答

1

CoreFoundation Ownership Policy,你的signalLine所有者,它来自一个Create功能。您必须致电CFRelease(signalLine)才能将其释放。

做到这一点,最安全的方法是确保它不为NULL第一:

if (signalLine) CFRelease(signalLine);

+0

太棒了!用于快速解决方案 –