Frage

Ich habe ein NSTimer, die jede Sekunde abfeuert, und an diesem zweiten ich ein UILabel aktualisieren, indem Sie den Text-Eigenschaft wie folgt:

remainglbl.text = [NSString stringWithFormat:@"%i:%02i", var1, var2];   

Es funktioniert gut, aber wenn ich es in Xcode Beim Start Performance Tool laufen -> Leaks, scheint es, dass der Speicher hält nur auf Klettern und Bergsteigen und Klettern

.

Von meinem Verständnis, sollte die Zeichenfolge Autoreleased werden (obwohl ich nie die Erinnerung Rückgang sehen, oder stoppen zu erhöhen).

Ist das ein Speicherleck? Gibt es eine bessere Art, wie ich dies tun kann meine Speichernutzung im Zaum zu halten?

Danke!

Update: Code, um den Timer zu erstellen, ist wie folgt:

timeTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changeTime:) userInfo:nil repeats:YES];  

Code zur Reinigung bei Timer Finish ist wie folgt:

[timeTimer invalidate];
[timeTimer release];
timeTimer = nil;

Alles, was daran falsch? Ich dachte, der Speicher könnte, sobald die Timer beendet befreit werden, aber es funktioniert nicht.

War es hilfreich?

Lösung

Ich glaube, das Problem war, dass ich nicht die Performance-Tools verstanden. Laufen mit dem Activity Monitor zeigt keine Erhöhung der Speichernutzung.

Andere Tipps

Nur aus Neugier heraus, tritt das Problem immer noch auftreten, wenn Sie [remainingLbl setText:] verwenden Sie stattdessen die Eigenschaft der Einstellung? Ihr Code sieht gut aus ... der Speicher aufgeräumt werden sollte, da string autoreleases die Zeichenfolge.

Eine andere Sache, um zu versuchen: Wenn Sie Threads in Objective-C erstellen Sie den gesamten Code in einer NSAutoreleasePool wickeln, so dass die Dinge, die Sie während der Threads Ausführung erstellen bereinigt werden. Das sollte keinen Unterschied machen, wie man bereits vorhanden sein sollte -. Aber es ist einen Versuch wert

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