Проблемы с производительностью CGPath при перерисовке
У меня странные проблемы с производительностью приложения, над которым я сейчас работаю. В одном представлении используется инфографика самостоятельного построения, аналогичная полярной диаграмме. оно перерисовывается каждые 8 секунд. первые пять раз все перерисовывается, все в порядке, но потом вид с прокруткой, который является суперпредставлением вида, показывающего, что инфографика начинает сильно заикаться. Вот основные части кода, который создает графику.
[_chartLayer removeFromSuperlayer]; _chartLayer = [CALayer layer];
CAShapeLayer *segment = [mySegmentProducer produceSegmentWith:startAngle and: endAngle and: radius and: sliceAngle];
[_chartLayer addSublayer:segment];
[self.layer addSublayer:_chartLayer];
а вот функция "yieldSegmentWith:", размещенная в другом классе:
- (CAShapeLayer*) produceSegmentWith:(float)startAngle and:(float)endAngle and:(float) radius and: (float) sliceAngle {
CAShapeLayer *segment = [CAShapeLayer layer];
CGPathRef pathTwo = [self addSegmentPath: radius fromStartAngle:startAngle toEndAngle:endAngle];
// hue = 224 / 360 initial value
segment.fillColor = [UIColor colorWithHue:self.hue/360 saturation:0.5 brightness:0.63 alpha:1.0].CGColor;
segment.lineWidth = 0.0;
segment.path = pathTwo;
self.hue-= 15;
return segment;
}
Я уверен, что что-то не так с тем, что я делаю здесь. В других постах я видел, что всегда используется функция "CGPathRelease". но я не уверен, как правильно его использовать. Когда я помещаю это прямо в строку выше "возвращаемый сегмент", я всегда получаю исключение "BAD_THREAD_ACCESS". Кто-нибудь может привести меня в правильном направлении?