iPhone Speicherverwaltung

Ich arbeite an einer App und möchte sicherstellen, dass ich den Speicher richtig verwalte und alles freigebe, was ich sollte. In meiner viewDidLoad-Methode ordne ich einige Variablen zu, um zu bestimmen, welcher Hintergrund auf die Ansicht angewendet werden soll (für die Internationalisierung), und die App funktioniert einwandfrei, wenn ich sie nicht freigebe.

Das Problem ist, dass die App abstürzt, wenn ich die Variablen freigebe. Code von viewDidLoad ist unten:

// 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];

Warum würde das Freigeben der Variablen backgroundImageName und language zum Absturz der App führen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage