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
Sie haben 3 Optionen zum Erstellen eines Timers, wie Apple im Dokument sagt:
- Verwende
scheduledTimerWithTimeInterval:invocation:repeats:
oderscheduledTimerWithTimeInterval: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
: odertimerWithTimeInterval: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:
Wo die 2 ein beliebiges Intervall ist (in diesem Fall 2 Sekunden).