2013-09-27 6 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

здорово! для быстрого решения –