NSTimer feuert den Selektor nicht, wenn er mit "scheduledTimerWithTimeInterval" hinzugefügt wird

7

Ich habe ein Code-Snippet wie folgt:

%Vor%

Wenn ich es so nenne, wird der Selektor nicht nach der angegebenen timeOutInSeconds ausgelöst. Wenn ich es jedoch wie folgt ändere, wird der Selektor zweimal aufgerufen.

%Vor%

Könnte irgendjemand irgendeinen Vorschlag dazu machen, was ich wahrscheinlich falsch mache?

Ich verwende XCode 5.1 und aufbaue auf 7.1.1 iPhone 4S

    
xceph 12.05.2014, 15:26
quelle

2 Antworten

31

Rufen Sie diesen Timer im Hauptthread auf:

%Vor%     
nmh 13.05.2014, 03:48
quelle
1

Sie haben 3 Optionen zum Erstellen eines Timers, wie Apple im Dokument sagt:

  
  • Verwende scheduledTimerWithTimeInterval:invocation:repeats: oder    scheduledTimerWithTimeInterval:target:selector:userInfo:repeats: klasse   Methode, um den Timer zu erstellen und ihn in der aktuellen Laufschleife zu planen   der Standardmodus.
  •   
  • Benutze timerWithTimeInterval:invocation:repeats : oder    timerWithTimeInterval:target:selector:userInfo:repeats: -Klassenmethode   um das Timer-Objekt zu erstellen, ohne es in einer Ausführungsschleife zu planen. (Nach   Beim Erstellen müssen Sie den Timer manuell zu einer Run-Schleife hinzufügen, indem Sie ihn aufrufen   die Methode addTimer: forMode: des entsprechenden NSRunLoop-Objekts.)
  •   
  • Ordnen Sie den Timer zu und initialisieren Sie ihn mit dem    initWithFireDate:interval:target:selector:userInfo:repeats: Methode.   (Nach dem Erstellen müssen Sie den Timer manuell zu einer Laufschleife hinzufügen   Aufruf der AddTimer: forMode: Methode des entsprechenden NSRunLoop   Objekt.)
  •   

Die von Ihnen verwendete Methode terminiert den Timer bereits in der aktuellen Schleife und Sie sollten keine weitere Zeit einplanen. Meiner Meinung nach ist das Problem anderswo, versuche (um es einfach zu machen), einen festen Wert anstelle von timeOutInSeconds zu setzen.
Die gebräuchlichste Art, nach einer bestimmten Verzögerung (die sich nicht wiederholen sollte) etwas aufzurufen, ist dispatch_after:

%Vor%

Wo die 2 ein beliebiges Intervall ist (in diesem Fall 2 Sekunden).

    
Andrea 12.05.2014 15:38
quelle

Tags und Links