Ich habe mich gefragt, ob es eine Lösung gibt, ein Ereignis einmal nach 30 Sekunden oder alle 30 Sekunden in CocoaTouch Objective C auszulösen.Ziel C entspricht Javascripts setTimeout?
24
A
Antwort
31
Es gibt eine Reihe von Optionen.
Die schnellste ist die Verwendung in NSObject
:
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay
(Es gibt ein paar andere mit leichten Variationen sind.)
Wenn Sie mehr Kontrolle wünschen oder in der Lage sein, alle dreißig Diese Nachricht zu sagen, senden Sekunden brauchen Sie wahrscheinlich NSTimer
.
3
+[NSTimer scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:]
Sie können sich auch an den anderen NSTimer
Methoden suchen wollen
11
einen Blick auf die Klasse NSTimer
Nehmen:
NSTimer *timer;
...
timer = [[NSTimer scheduledTimerWithTimeInterval:30.0 target:self selector:@selector(thisMethodGetsFiredOnceEveryThirtySeconds:) userInfo:nil repeats:YES] retain];
[timer fire];
Irgendwo anders haben Sie die tatsächliche Methode, die behandelt das Ereignis:
- (void) thisMethodGetsFiredOnceEveryThirtySeconds:(id)sender {
NSLog(@"fired!");
}
42
Die performSelector: Familie hat ihre Grenzen. Hier ist die nächste SetTimeout äquivalent:
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * 0.5);
dispatch_after(delay, dispatch_get_main_queue(), ^(void){
// do work in the UI thread here
});
EDIT: Ein paar Projekte, die syntaktischen Zucker liefern und die Fähigkeit, die Ausführung (clear) abzubrechen:
Verwandte Themen
- 1. setTimeOut Entspricht in c?
- 2. Vue entspricht setTimeOut?
- 3. pygame entspricht settimeout? (Anruffunktion nach x Millisekunden?)
- 4. Was entspricht JavaScript setTimeout auf qtScript?
- 5. Was ist das Ziel-C entspricht Java's ByteArrayOutputStream?
- 6. C# entspricht C Vereinigung
- 7. Caret in Ziel C
- 8. Ziel C - Speicherverwaltung Frage?
- 9. String Hilfe - Ziel C
- 10. Ziel C Formieren CGFloat
- 11. in objectAtIndex Ziel c
- 12. Ziel C: SHA1
- 13. Ziel C Standardparameter?
- 14. HTML in Ziel C
- 15. Ziel C: Mehrere Delegaten
- 16. Ziel-C -> Symbol?
- 17. Ziel - C -> Swift
- 18. Ziel C, HUD-Panel?
- 19. Flucht% in Ziel c
- 20. Ziel C - Welche Syntax?
- 21. Ziel-c Singleton Speicherfreigabe
- 22. Antlr4 C++ Ziel
- 23. Ziel c Codierrichtlinien
- 24. __OBJC__ in Ziel C
- 25. wie in Ziel c
- 26. Konstruktor in Ziel c
- 27. Ziel c, NSMutableArray: indexOfObject
- 28. com.android.camera.action.CROP in Ziel-c?
- 29. Tempnam entspricht in C++
- 30. C++ entspricht Javas System.arraycopy
Wissen Sie, ob dies "dispatch_after" zu irgendeinem Zeitpunkt nutzt? – Jacksonkr
Meine Vermutung ist wahrscheinlich nicht (GCD ist C-Level und "weiß" nicht über Selektoren; auch diese API ist älter als GCD), aber es ist möglich, dass sie es unter der Haube verwendet. –