Tengo un método que devuelve CGPath
y está generando advertencias de analizador. El método se declara en un protocolo. Aquí está un ejemplo de implementación que está generando la advertencia:¿Cómo debo evitar esta advertencia de memoria?
"potenciales de fuga de un objeto asignado en la línea 47 y se almacenan en 'camino'":
- (CGPathRef)createPathForBounds:(CGRect)bounds key:(NSString *)key;
{
if ([key isEqualToString:OvalColumn])
{
CGPathRef path = CGPathCreateWithEllipseInRect(bounds, NULL);
return path;
}
return NULL;
}
Aquí está el uso de ejemplo que es la generación de la advertencia, "decremento incorrecta de la cuenta de referencia de un objeto que no pertenece a este punto por el que llama"
CGPathRef path = [self.delegate createPathForBounds:bounds key:someKey];
// Use the path to do some drawing
CGRelease(path);
Mi gestión de memoria es el correc t; Estoy devolviendo un CGPath
retenido de mi método de protocolo y lo estoy liberando en el bloque de llamadas, por lo que sé que las advertencias se pueden ignorar, pero me gustaría eliminarlas por completo.
¿Falto una convención de nomenclatura que hará feliz al analizador? ¿Se pueden definir las funciones en los protocolos? ¿Cómo funcionará la creación de subclases?
¿Podría quizás divulgar la redacción de la advertencia que está recibiendo, o debemos adivinar? –
Mis disculpas. Actualizado. – kubi
¿Qué sucede si cambia el nombre de su método a pathForBounds: key: ?? –