2009-07-19 9 views
0

Hey hoffe, dass jemand helfen kann, wie ich mit meinem Verstand damit fertig bin !?UISlider setValue "Leaking"

Ich habe einen UISlider. Ich möchte, dass es sich bewegt, wenn der Fortschritt einer Aufgabe stattfindet (Musik spielen).

Im Einstellung seines Wertes als die fortgesetzten Ereignisse passieren. (Fortschritt durch den Track)

-(void)updateSlider:(float)value { 
    NSLog(@" %f ",value); 
    [timeIndexSlider setValue: value animated:YES]; 
} 

Logs Zustand, dass der Float-Wert in Ordnung ist ..

aber sein bewegt einfach nicht und ich erhalte die keinen Autofreigabepool - gerade Mitteilung undicht ist, dass Sie erhalten würden aus einem Thread ohne einen in der Konsole. Es ist kein Thread von meiner Seite beteiligt.

Gibt es ein Problem beim häufigen Aktualisieren eines UISliders?

Gibt es eine andere Möglichkeit, die Bewegung der Schieberegler zu steuern?

Prost

+0

Woher rufen Sie die 'updateSlider' Methode? Setzen Sie einen Haltepunkt in der Methode und sehen Sie im Debugger, ob die Methode von irgendwo unerwartet aufgerufen wird (ein CoreAudio-Thread?). –

+0

Nein nichts unerwartet über den Aufruf im Debugger –

+0

Wie sieht der Rest Ihres Codes aus? bist du vielleicht in einer Art von Schleife (Musik_not_done) wo du nicht zurückkommst und Nachrichten verarbeitet bekommen? Wenn Sie keinen Timer für Ihre Slider-Updates verwenden, könnte das Ihr Problem sein. –

Antwort

0

Ich denke, Sie bekommen Updates auf einem anderen Thread und dann auf diesem Thread in UIKit aufrufen.

Versuchen Sie, eine performSelectorOnMainThread mit einer neuen Methode, die die Aktualisierung durchführt (möglicherweise ein NSNumber-Objekt).

+0

Sie sind fantastisch! –

+0

Noch leckt das Objekt, das in den Perform Selector tho übergeben wird –

0

Sind Halte Sie einen Verweis auf die UISlider? Wenn nicht, könnten Sie -setValue: animated: auf einer Null-Referenz aufrufen. Objective-C wird dies ermöglichen, ohne die Methode tatsächlich auszuführen.

Dies könnte möglicherweise erklären, warum Sie die richtige Float-Wert werden immer in die Funktion übergeben, sind aber keine Updates bekommen ...

einen Haltepunkt setzen, wie vorgeschlagen, und sicherstellen, dass die UISlider Referenz nicht null ist .

Wenn nicht, versuchen Sie, etwas Code zu posten, damit wir einen Blick darauf werfen können.

Lassen Sie uns wissen, wie es geht,

Tom

+0

Nein der Schieberegler ist da ... und ich habe hinzugefügt NSLog (@ "% f", timeIndexSlider.value); nach dem Anruf und der Wert ist korrekt! ... nur nicht visuell die Anzeige zu ändern. –