Проблемы с производительностью 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". Кто-нибудь может привести меня в правильном направлении?

0 ответов

Другие вопросы по тегам