Mam metodę, która zwraca CGPath
i generuje ostrzeżenia analizatora. Metoda jest zadeklarowana w protokole. Oto przykład implementacja że generuje ostrzeżenie:Jak powinienem unikać ostrzeżenia o tej pamięci?
„Potencjalny przeciek obiektu przeznaczono na linii 47 i przechowywane w«ścieżce»”:
- (CGPathRef)createPathForBounds:(CGRect)bounds key:(NSString *)key;
{
if ([key isEqualToString:OvalColumn])
{
CGPathRef path = CGPathCreateWithEllipseInRect(bounds, NULL);
return path;
}
return NULL;
}
tutaj jest przykład użycia czyli generowanie ostrzeżeń, „Niepoprawna ubytek liczenia odniesienia obiektu, który nie jest własnością w tym momencie przez dzwoniącego”
CGPathRef path = [self.delegate createPathForBounds:bounds key:someKey];
// Use the path to do some drawing
CGRelease(path);
Moja zarządzanie pamięcią jest correc t; Przekazuję zatrzymaną CGPath
z mojej metody protokołu i zwalniam ją w bloku wywołującym, więc wiem, że ostrzeżenia mogą zostać zignorowane, ale chciałbym je całkowicie usunąć.
Czy brakuje mi konwencji nazewnictwa, która sprawi, że analizator będzie zadowolony? Czy można definiować funkcje w protokołach? Jak działa podklasa?
Czy zdajesz sobie sprawę z tego, co słychać w ostrzeżeniu? –
Moje przeprosiny. Zaktualizowano. – kubi
Co się stanie, jeśli zmienisz nazwę metody na pathForBounds: key: ?? –