Zarządzanie pamięcią iPhone'a
Pracuję nad aplikacją i chciałbym się upewnić, że prawidłowo zarządzam pamięcią i wypuszczam wszystko, co powinienem. W mojej metodzie viewDidLoad przydzielam niektóre zmienne przy określaniu, które tło zastosować do widoku (w celu internacjonalizacji), a aplikacja działa poprawnie, jeśli ich nie zwolnię.
Problem polega na tym, że jeśli zwolnię zmienne, aplikacja ulegnie awarii. Kod z viewDidLoad jest poniżej:
// Set the background image based on the phone's preferred language
NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
NSString *backgroundImageName = [[NSString alloc] init];
backgroundImageName = [NSString stringWithFormat:@"background-%@.png",language];
self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:backgroundImageName]];
... do some more initialization stuff ...
// IF THE FOLLOWING ARE RELEASED THE APP WILL CRASH!!!
//[backgroundImageName release];
//[language release];
Dlaczego zwalnianie zmiennych backgroundImageName i języka powoduje awarię aplikacji?