NSTimer Zuverlässige Alternativen

8

Ich habe eine Anwendung, die bestimmte Dinge alle 1 Sekunde protokollieren soll und ich verwende derzeit NSTimer , aber wenn meine Anwendung Bildschirme (oder fast alles andere, wirklich) übergeht, verlangsamt sie den Timer ein wenig für ungenaue Messwerte.

Was ist eine zuverlässige Alternative zu verwenden? Mein aktueller Code ist wie folgt:

%Vor%     
Baub 17.11.2011, 18:41
quelle

2 Antworten

12

NSTimer ist nicht garantiert genau rechtzeitig pünktlich. Aber Sie können einen NSTimer viel zuverlässiger verwenden als jetzt. Wenn Sie scheduledTimerWithTimeInterval verwenden, erstellen Sie einen NSTimer, der in der Ausführungsschleife für NSDefaultRunLoopMode eingeplant ist. Dieser Modus ist angehalten, wenn die Benutzeroberfläche verwendet wird. Daher werden Ihre Timer bei Benutzerinteraktion nicht ausgelöst. Um diese Pause zu vermeiden, verwenden Sie den Modus NSRunLoopCommonModes . Dazu müssen Sie den Timer wie folgt selbst planen:

%Vor%     
NJones 17.11.2011, 19:59
quelle
4

Sie könnten:

  • Fügen Sie den NSTimer in einen anderen Thread ein (der von der Benutzeroberfläche nicht beeinflusst wird)
  • Verringern Sie das Intervall (sagen wir 0,1 Sekunden) und überprüfen Sie in Ihrer Logging-Funktion, ob es die "richtige" Zeit ist, um zu protokollieren, was Sie wollen.
Sergio Moura 17.11.2011 18:45
quelle

Tags und Links