У меня возникает утечка памяти при работе с 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;
}
С помощью инструментального анализа я получаю утечку памяти в строке с «return
» в textMutablePathForFrame
, которая говорит: «Возможная утечка объекта, размещенного в строке 132» (строка 132 — это сама обратная линия).
Я также получаю утечку памяти в textFrameForFrame
в строке «CGPathRelease(textMutablePath);
», в которой говорится: «Неверное уменьшение счетчика ссылок объекта, который в данный момент не принадлежит вызывающему».
Не могу понять это, я почувствовал, что наконец-то хорошо разобрался с управлением памятью в Core.
ОБНОВЛЕНИЕ: похоже, что это, возможно, ошибка, и я собираюсь проверить ее еще раз, чтобы узнать, чувствует ли кто-то другой.
CFRelease()
возвращаете объекты из вызывающей функции? - person   schedule 29.08.2012newMutablePathForFrame
. - person Rob Napier   schedule 29.08.2012