Wycieki pamięci - formatowanie ciągu znaków w celu wyświetlania czasu, co sekundę

Cześć ludzie. Mam metodę, która jest wywoływana w każdej sekundzie, której chcę użyć, aby wyświetlić czas, w którym moja aplikacja wykonuje swoją pracę. Obecnie klasa, z której korzystam (Którego nie stworzyłem) ma właściwość o nazwieprogress który przechowuje całkowitą liczbę sekund.

Już napisałemjakiś kod co zajmuje te sekundy i formatuje je na czytelny ciąg. Jestem nowy w tym, więc przepraszam, jeśli nie jest to najlepszy kod. Z zadowoleniem przyjmuję wszelkie sugestie:

<code>// hours, minutes, and seconds are instance variables defined as integers
int totalSeconds = (int)streamer.progress;

hours = totalSeconds / (60 * 60);

if (hours > 0)
    formattedTimeString = [NSString stringWithFormat:@"%d:", hours]; // WRONG

minutes = (totalSeconds / 60) % 60;
seconds = totalSeconds % 60;
[formattedTimeString stringByAppendingFormat:@"%d:%d", minutes, seconds]; // WRONG
</code>

Zasadniczo chcę, aby wyglądało to jako „3:35”, na przykład, aby pokazać 3 minuty, 35 sekund. Chcę tylko pokazać sekcję godzin, jeśli to była godzina, w którym to przypadku będzie to na przykład „2: 3: 35” (Czy ktoś może polecić lepszy sposób formatowania?).

Problem Mam to, gdzie faktycznie tworzę / ustawiam ciąg (Linie oznaczone jako ŹLE). Ponieważ jest to wykonywane co sekundę, łatwo dostanę wyciek, jeśli będę pytał o nowy obiekt ciągu. Uważam, że mogę rozwiązać ten problem, zwalniając foramttedTimeString na końcu metody, ale czy jest to właściwy sposób, aby to osiągnąć? CzyNSMutableString w jakikolwiek sposób pomóc? Czy jest lepszy sposób na Cocoa? Zapytałem już#iphonedev @ freenode i powiedzieli, że będę musiał sam napisać tę metodę, ale pomyślałem, że zapytam jeszcze raz.

Aby zapewnić kontekst: jest to aplikacja do transmisji strumieniowej radia internetowego (Wiem, że jest ich już wiele, ale ćwiczę). Chcę być w stanie pokazać czas, przez który strumień był odtwarzany.

Przepraszam, jeśli to pytanie jest głupie, tak jak powiedziałem, jestem nowy.

questionAnswers(4)

yourAnswerToTheQuestion