CGPath占用更多内存

时间:2011-07-01 17:22:13

标签: cocoa-touch quartz-graphics drawrect cgcontext cgpath

这是我遇到过的一项非常艰巨的挑战。我在移动手指时画线。创建这些线条使它们绕过我的绘图视图中的图像视图。我正在使用下面的代码。

代码: -

-(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占用了更多的内存。信不信由你。我的应用程序运行在48MB并跳转到96 MB,其中90MB是CGPath。我不知道是什么原因可以让任何人帮助我。

0 个答案:

没有答案