Frage

Betrachten Sie die folgende Methode, wo ich ein string und gibt ihn zurück.Ich möchte, lassen Sie die Bausteine der Zeichenfolge, aber dann wird die Zeichenfolge basierend auf Werten, die nicht mehr existiert.Was nun?

Bin ich ein Speicherleck, und wenn ja, wie kann ich es korrigieren?

- (NSString) getMiddahInEnglish:(int)day{
NSArray *middah = [[NSArray alloc] initWithObjects:@"Chesed", @"Gevurah", @"Tiferes", @"Netzach", @"Hod", @"Yesod", @"Malchus"];
NSString *firstPartOfMiddah = [NSString stringWithFormat: @"%@", [middah objectAtIndex: ((int)day% 7)-1]];
NSString *secondPartOfMiddah = [NSString stringWithFormat: @"%@", [middah objectAtIndex: ((int)day / 7)]];

NSString *middahStr = [NSString string@"%@ She'bi@%", firstPartOfMiddah, secondPartOfMiddah];

[middah release];
[firstPartOfMiddah release];
[secondPartOfMiddah release];

return middahStr;

}

Am Ende der Methode die return-string middahStr wurde nicht veröffentlicht.Ist das ein problem?Bin ich ein Speicherleck?

War es hilfreich?

Lösung

Ganz im Gegenteil:Sie sind über loslassen.

middah Sie alloc und init.Dann sind Sie release es.Alles ist gut.

firstPartOfMiddah und secondPartOfMiddah, rufen Sie einen NSString "stringWith" Bequemlichkeit Methode.Dies ist äquivalent zum Aufruf alloc init, und autorelease. Ihre Freigabe ist ein Fehler, denn Sie sind im wesentlichen gegeben autorelease release später.

middahStr rufen Sie die convenience-Methode, aber die Rückkehr.Alles ist gut.Es werden später veröffentlicht, die von der autorelease-pool.

Faustregel (ich bin sicher, es gibt genügend Ausnahmen):Wenn Sie don ' T alloc Sie nicht release es.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top