Как я могу освободить этот CGPath, когда мне нужно его вернуть?
У меня есть метод, который возвращает CGMutablePathRef, что-то вроде этого:
- (CGMutablePathRef)somePath;
{
CGMutablePathRef theLine = CGPathCreateMutable();
CGPathMoveToPoint(theLine, NULL, 50, 50);
CGPathAddLineToPoint(theLine, NULL, 160, 480);
CGPathAddLineToPoint(theLine, NULL, 270, 50);
return theLine;
}
Статический анализатор Xcode/Clang предупреждает, что существует потенциальная утечка. Документы говорят, что называть CGPathRelease(), но где бы я это сказал?
Если я поставлю это до возвращения метода, это не приведет к тому, что theLine исчезнет, прежде чем он вернется к нему вызывающий?
Ответы
Ответ 1
Если имя метода начинается с new
, clang ожидает, что он вернет объект с сохранением числа 1. Другими словами, переименование метода от somePath
до newSomePath
приведет к отключению анализатора.
Если вы действительно хотите автоопределить CGPathRef, вы можете отправить его в NSObject и затем вызвать авторекламу. Я знаю, что работает для CFTypes, я честно не уверен, соответствует ли CGPathRef.
Ответ 2
Как насчет создания mutablepath, передавая его в вашу функцию здания, а затем используя и освобождая его:
CGMutablePathRef mPath = CGPathCreateMutable();
[buildPath:mPath]; //adds reusable lines etc
...do something with it...
CGPathRelease(mPath);