Ich habe NSMutableArray * cityData, das ich mit benutzerdefinierten LocationDetail-Objekten fülle. cityData wird in viewDidLoad erstellt und in dealloc freigegeben. Irgendwo im Code, basierend auf Benutzeraktionen, besiedeln ich LocationDetail und fügen Sie Citydata Array:Speicherverwaltungsproblem mit NSString
LocationDetail* d = [[LocationDetail alloc] init];
d.city = [NSString stringWithFormat:@"%S", (char*)sqlite3_column_text16(statement, 1)];
d.tz = [NSString stringWithFormat:@"%S", (char*)sqlite3_column_text16(statement, 3)];
d.country = [NSString stringWithFormat:@"%S", (char*)sqlite3_column_text16(statement, 2)];
d._id = [NSString stringWithFormat:@"%S", (char*)sqlite3_column_text16(statement, 0)];
[cityData addObject:d];
[d release];
Als ich mit dem View-Controller fertig bin, und entfernen Sie es, das unbeabsichtigte Austreten Dienstprogramm sagt, dass ich ein Leck im Code haben oben in NSCFString in allen 4 Zeilen mit [NSString stringWithFormat] oben.
versuchte ich die sqlite3 Sachen zu entfernen und um den Anruf zu so etwas wie
d._id = [NSString stringWithFormat:@"%s", "a string"]
mit dem gleichen Ergebnis vereinfachte. Wenn ich jedoch den NSString stringWithFormat wie folgt ersetze:
das Leck geht weg. Ich frage mich, warum es ein Leck gibt, wenn ich das stringWithFormat benutze, aber nicht wenn ich @ "etwas" verwende. Ist etwas offensichtlich, dass ich falsch mache?
Danke!
Zeigen Sie, wie Sie jede '@ Eigenschaft' ('city',' tz', 'country' und' _id') für 'LocationDetail' definiert haben. –
Die Eigenschaften von LocationDetail sind alle NSStrings * und definiert seinen Weg: @property (nicht atomisch, retain) NSString * _id; – MirekE
@interface LocationDetail: NSObject { NSString * city; NSString * tz; NSString * Land; \t NSString * _id; } @Eigenschaft (nicht atomar, behalten) NSString * Stadt; @Eigenschaft (nicht atomisch, behalten) NSString * tz; @Eigenschaft (nicht atomisch, behalten) NSString * Land; @property (nicht atomisch, beibehalten) NSString * _id; @end – MirekE