0

アプリでメモリ警告が発生し、クラッシュします。エラーは、描画オンタッチ機能にあると思います。alloc インストルメントで実行しようとすると、画面上で指を動かし続けるとメモリが増加し始めるためです。

これが私のコードです。

    touchSwiped = YES;

    UITouch *touch = [touches anyObject];

    previousPoint2 = previousPoint1;
    previousPoint1 = currentTouch;
    currentTouch = [touch locationInView:self.view];

    CGPoint mid1 = midPoint(previousPoint2, previousPoint1); 
    CGPoint mid2 = midPoint(currentTouch, previousPoint1);

    UIGraphicsBeginImageContext(CGSizeMake(480 , 320));
    [drawView.image drawInRect:CGRectMake(0, 0, 480,320)];  

    CGContextRef context = UIGraphicsGetCurrentContext();    

    CGContextSetLineCap(context,kCGLineCapRound);
    CGContextSetLineWidth(context, inkWidth);
    CGContextSetBlendMode(context, blendMode);
    CGContextSetRGBStrokeColor(context,redColor, greenColor, blueColor, 1);
    CGContextBeginPath(context);
    CGContextMoveToPoint(context, mid1.x, mid1.y);
    CGContextAddQuadCurveToPoint(context, previousPoint1.x, previousPoint1.y, mid2.x, mid2.y);
    CGContextStrokePath(context);

    drawView.image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsGetCurrentContext();
4

2 に答える 2

2

を使用する場合は、使い終わった後にUIGraphicsBeginImageContext必ずバランスをとってUIGraphicsEndImageContextください。そうしないときれいに片付けられません。メソッドに従って実行されるコードは、現在の UI コンテキストが手動で解放されたものであると依然として信じており、悲惨な結果を招く可能性があります。

于 2012-08-14T07:35:07.477 に答える
-2

Ohr が彼のコメントで言ったことを実行したところ、うまくいきました。

CGContextRefこんな感じでリリースしましたCGContextRelease(context);

于 2012-08-14T05:37:24.100 に答える