0

谁能告诉我为什么这种经常调用的方法会泄漏内存?

如果我看一下 iOS 分配工具/VM 工具,就没有泄漏....每 2 秒。如果我不调用此方法,则驻留大小仅每 40 秒增长 1 MB。有时我收到“确实收到内存警告”日志,但我不知道为什么会这样。居民大小,脏大小,分配......一切看起来都很好。

path2 是一个类变量。

-(void) drawPath:(float) winkel path:(UIBezierPath *) mpath toPoint:(CGPoint) pt{

    path2 = [UIBezierPath bezierPathWithCGPath:mpath.CGPath];

    box = CGPathGetPathBoundingBox(path2.CGPath);

    CGAffineTransform translate = CGAffineTransformMakeTranslation(-1 * (box.origin.x + (box.size.width / 2)), -1 * (box.origin.y + (box.size.height / 2)));
    [path2 applyTransform:translate];

    CGAffineTransform rotate = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(winkel));
    [path2 applyTransform:rotate];

    translate = CGAffineTransformMakeTranslation((box.origin.x + (box.size.width / 2)), (box.origin.y + (box.size.height / 2)));
    [path2 applyTransform:translate];

    translate = CGAffineTransformMakeTranslation(pt.x-(box.size.width / 2), pt.y-(box.size.height / 2));
    [path2 applyTransform:translate];

    [path2 fill];
}

我认为问题是 CGAffineTransformMakeTranslation/applyTransform ...但我无法弄清楚为什么这种方法会泄漏。

4

1 回答 1

1

名称中包含Make的函数返回的每个 Core Foundation 对象都必须使用 CFRelease 显式释放。

于 2013-09-06T15:51:25.463 回答