非常に頻繁に呼び出されるこのメソッドがメモリをリークしている理由を誰か教えてもらえますか?
iOS Allocation Tool / VM Tool を見てみると、リークはありません....しかし、ここで見つけた report_memory 関数を stackoverflow で見ると、常駐サイズが 1 MB 増加していることがわかります。 2秒あたり。このメソッドを呼び出さない場合、常駐サイズは 40 秒あたり 1 MB しか増加しません。ある時点で「Did receive memory warning」ログを受け取りますが、なぜこれが起こっているのかわかりません。Resident Size、Dirty Size、Allocations ... すべて問題ないようです。
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 だと思います...しかし、このメソッドがリークしている理由がわかりません。