Ho un metodo che restituisce un CGPath
e sta generando avvisi dell'analizzatore. Il metodo è dichiarato in un protocollo. Ecco un esempio di implementazione che genera l'allarme:Come dovrei evitare questo avviso di memoria?
"potenziale perdita di un oggetto allocato sulla linea 47 e memorizzati in 'percorso'":
- (CGPathRef)createPathForBounds:(CGRect)bounds key:(NSString *)key;
{
if ([key isEqualToString:OvalColumn])
{
CGPathRef path = CGPathCreateWithEllipseInRect(bounds, NULL);
return path;
}
return NULL;
}
Ecco esempio di utilizzo che è generando l'avvertimento, "decremento non corretta del conteggio dei riferimenti di un oggetto che non è di proprietà, a questo punto da parte del chiamante"
CGPathRef path = [self.delegate createPathForBounds:bounds key:someKey];
// Use the path to do some drawing
CGRelease(path);
mia gestione della memoria è correc t; Sto restituendo uno CGPath
trattenuto dal mio metodo di protocollo e lo sto rilasciando nel blocco chiamante, quindi so che gli avvertimenti possono essere ignorati, ma mi piacerebbe rimuoverli del tutto.
mi manca una convenzione di denominazione che renderà l'analizzatore felice? È possibile definire le funzioni nei protocolli? Come funziona la sottoclasse?
Potrebbe forse rivelare il testo della segnalazione che stai ricevendo, o dobbiamo indovinare? –
Le mie scuse. Aggiornato. – kubi
Cosa succede se si rinomina il metodo su pathForBounds: chiave: ?? –