Подтвердить что ты не робот

Как я могу освободить этот 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 исчезнет, ​​прежде чем он вернется к нему вызывающий?

4b9b3361

Ответ 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);