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?

questionAnswers(3)

yourAnswerToTheQuestion