CGPath занимает больше памяти - PullRequest
1 голос
/ 01 июля 2011

Это очень сложная задача, с которой я когда-либо сталкивался. Я рисую линии, когда палец двигается. Линии создаются таким образом, что они обходят пресет изображений в моем чертеже. Я использую код ниже.

Код: -

-(void) paintLinesinContext:(CGContextRef)context{  
       for (Line *line in lines) {
        NSMutableArray *arrayOfPoints=[line getPointsArray];
        CGContextBeginPath(context);
        int numberofPoints=[arrayOfPoints count] ;
        CGPoint points[numberofPoints];
        int index=0;
        CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]);
        if (line==tmpline) {
            float dashPhase=10;
            float dashPattern[3]={5,5};
            CGContextSetLineDash(context, dashPhase, dashPattern, 2);
            CGContextSetStrokeColorWithColor(context, [[UIColor redColor] CGColor]);
        }       
        for (NSValue *pointObject in arrayOfPoints) {
            points[index]= [pointObject CGPointValue];
            if (index==0) {
                CGContextMoveToPoint(context, points[index].x,points[index].y);
            }
            else {
                CGContextAddLineToPoint(context, points[index].x, points[index].y);
            }
            index++;
        }       
        CGContextStrokePath(context);
        float dashPhase=10;
        float dashPattern[3]={1,0};
        CGContextSetLineDash(context, dashPhase, dashPattern, 2);
    }
}

Моя проблема в том, что мое приложение зависло из-за нехватки памяти. Когда я изучил его с помощью выделения в инструментах, я заметил, что CGPath занимает больше памяти. Хочешь верь, хочешь нет. Мое приложение работает на 48 МБ и переходит на 96 МБ, из которых 90 МБ - CGPath. Я не знаю, в чем причина Кто-нибудь может мне помочь.

...