CGMutablePath
次の状況で作業しているときにメモリリークが発生します。
- (CGMutablePathRef) textMutablePathForFrame:(CGRect)frame
{
CGAffineTransform transform = CGAffineTransformMakeScale(frame.size.width / self.shapeMutablePathSize.width, frame.size.height / self.shapeMutablePathSize.height);
return CGPathCreateMutableCopyByTransformingPath(self.shapeMutablePath, &transform);
}
- (CTFrameRef) textFrameForFrame:(CGRect)frame framesetter:(CTFramesetterRef)framesetter
{
CGMutablePathRef textMutablePath = [self textMutablePathForFrame:frame];
CTFrameRef textFrame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), textMutablePath, NULL);
CGPathRelease(textMutablePath);
return textFrame;
}
機器の分析により、「行132に割り当てられたオブジェクトの潜在的なリーク」(行132はリターン行自体)を示す「 return
」の行でメモリリークが発生します。textMutablePathForFrame
また、 「この時点で呼び出し元が所有していないオブジェクトの参照カウントの誤ったデクリメント」というtextFrameForFrame
行でメモリリークが発生します。CGPathRelease(textMutablePath);
これに頭を悩ませることはできません。Coreのメモリ管理についてようやくよく理解できたように感じました。
更新:これはおそらくバグのように見えます。もう一度ぶつけて、他の誰かが違った感じをしているのかどうかを確認します。