Ich habe den folgenden Code in meiner .h-Datei:
%Vor%Ich habe den folgenden Code in meiner .m-Datei:
%Vor%Aber mein Timer möchte nicht aufhören, wenn ich das Ungültige aufruft.
Der LoginButton wird nur zweimal gedrückt, einmal wenn das strResult auf "Guard" steht und dann ändert die Anwendung es auf "Owner" und der Benutzer drückt erneut die Login-Taste, also glaube ich nicht m Einstellen mehrerer Timer.
Nachdem ich die Login-Taste gedrückt und den Timer gestartet habe, gehe ich zu einer anderen Ansicht und gehe dann zurück, um den Login-Knopf noch einmal zu drücken, um den Timer anzuhalten. Muss ich etwas Besonderes tun, um den messageTimer zu erhalten, da ich die Ansichten für einen Moment gewechselt habe und dann zurückkam?
Irgendwelche Ideen?
Danke!
Sie müssen [self.messageTimer invalidate]
für denselben Thread aufrufen, für den Sie den Timer erstellt haben. Stellen Sie nur sicher, dass der Timer im Hauptthread erstellt und ungültig gemacht wird.
NSTimer wird von NSRunLoop beibehalten. Daher sehe ich das Problem nur, wenn Sie mehr als einen Timer erstellen und nur das ungültig machen, auf was Sie sich beziehen.
Beispiel:
%Vor%Wenn der Code am Ende (beginnend mit if) zweimal mit UserType! = Owner aufgerufen wird, erstellen Sie einen neuen Timer, ohne den alten zu entwerten. Jetzt laufen zwei Timer. Wenn der Code ein drittes Mal ausgeführt wird, fügen Sie einen dritten Timer hinzu und so weiter. Ausführen des Codes mit UserType == Nur Besitzer macht den letzten Timer ungültig und selbst wenn er wiederholt aufgerufen wird, werden ältere Timer nicht ungültig.
Sie haben ein Timer-Leck. ; -)
Ich habe einen Ansatz, um den Timer zu stoppen oder zu deaktivieren, bevor Sie dies anwenden, stellen Sie sicher, dass Sie alle Fälle wie oben erwähnt ausprobiert haben, damit Sie auch verstehen, warum dieser Ansatz letztendlich verwendet wurde.
%Vor%Wenn also der Fall auftritt, dass der Timer nicht stoppt und dann in diesen Code eingeht, wird der Timer dauerhaft gestoppt.
Tags und Links objective-c nstimer