2011-08-10 13 views
5

Mam następującą linię kodu:ios: Jak rozwiązać to ostrzeżenie przeciek pamięci

mainLayer.shadowColor = CGColorCreate(CGColorSpaceCreateDeviceRGB(), components); 

Kiedy biegnę na produkcie> Analyse w Xcode daje mi ostrzeżenie:

Potential leak of an object allocated on line 176 

Więc oznacza, że ​​nie uwalniam moich CGColor. Dlatego pomyślałem, że dobrym rozwiązaniem będzie:

CGColorRef shadowColor = CGColorCreate(CGColorSpaceCreateDeviceRGB(), components); 
mainLayer.shadowColor = shadowColor; 
CGColorRelease(shadowColor); 

Ale nadal otrzymuję takie samo ostrzeżenie o wycieku. Jak mogę naprawić problem?

Odpowiedz

16

Trzeba również zwolnić colorspace:

CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB(); 
CGColorRef shadowColor = CGColorCreate(colorspace, components); 
mainLayer.shadowColor = shadowColor; 
CGColorRelease(shadowColor); 
CGColorSpaceRelease(colorspace); 
1

to:

CGColorSpaceCreateDeviceRGB() 

o każdej zmianie powracającego obiektu jesteś odpowiedzialny za dealokując? Pomyślałem, że pamiętam, że istnieje funkcja taka jak CGColorSpaceRelease().