这是我遇到过的一项非常艰巨的挑战。我在移动手指时画线。创建这些线条使它们绕过我的绘图视图中的图像视图。我正在使用下面的代码。
代码: -
-(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。我不知道是什么原因可以让任何人帮助我。