Потенциальная утечка объекта при использовании CGGraphics в цикле


Я не понимаю, как решить эту проблему? Я использовал "analyze", потому что моя программа вылетает из-за проблем с памятью, и первая из семи подобных обозначений - "потенциальная утечка объекта, хранящегося в signalline", связанная с CGContextStrokePath (signalContext);

- (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 2

1 ответ:

В соответствии с политикой владения CoreFoundation, Вы являетесь владельцем signalLine, который пришел из функции Create. Вы должны вызвать CFRelease(signalLine), чтобы освободить его.

Самый безопасный способ сделать это-сначала убедиться, что он не равен нулю:

if (signalLine) CFRelease(signalLine);