Me preguntaba si hay una solución para plantear un evento una vez después de 30 segundos o cada 30 segundos en CocoaTouch ObjectiveC.Objetivo C equivalente a javascripts setTimeout?
24
A
Respuesta
31
Hay una serie de opciones.
El más rápido de usar está en NSObject
:
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay
(Hay algunos otros con ligeras variaciones.)
Si desea más control o para poder decir enviar este mensaje cada treinta segundos es probable que necesite NSTimer
.
3
+[NSTimer scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:]
También es posible que desee mirar a los otros NSTimer
métodos
11
Tome un vistazo a la clase NSTimer
:
NSTimer *timer;
...
timer = [[NSTimer scheduledTimerWithTimeInterval:30.0 target:self selector:@selector(thisMethodGetsFiredOnceEveryThirtySeconds:) userInfo:nil repeats:YES] retain];
[timer fire];
En algún otro lugar que tiene el método real que maneja el evento:
- (void) thisMethodGetsFiredOnceEveryThirtySeconds:(id)sender {
NSLog(@"fired!");
}
42
El performSelector: family tiene sus limitaciones. Aquí es el equivalente más cercano setTimeout:
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: un par de proyectos que proporcionan azúcar sintáctico y la posibilidad de cancelar la ejecución (clearTimeout):
Cuestiones relacionadas
- 1. Objetivo C equivalente a Java ArrayList
- 2. ¿Hay un equivalente sqlite .dump en objetivo-c?
- 3. Esperar y notificar equivalente en el Objetivo c?
- 4. Convertir el objetivo C a C# - ¿Cuál es el equivalente de este código?
- 5. C# equivalente a shell_exec
- 6. C# equivalente a InStrRev
- 7. C++ equivalente a java.lang.Integer.MIN_VALUE
- 8. Objetivo C Introspección/Reflexión
- 9. Formas de pago equivalentes a javascript setTimeout
- 10. setTimeout (f, 0) equivalente? ¿Por qué soluciona problemas entre navegadores?
- 11. Ajuste del objetivo C en el objetivo C++/C++
- 12. ¿Cuál es el equivalente de GWT de setTimeout?
- 13. ¿Hay un equivalente de setTimeout en ExtendScript de Adobe
- 14. ¿Cuál es el equivalente de setTimeOut() javascript to Android?
- 15. ¿Cuál es el equivalente de setTimeout de JavaScript en qtScript?
- 16. C# Equivalente a Java IdentityHashMap
- 17. Equivalente a #region para C++
- 18. C equivalente a fstream's peek
- 19. Python equivalente a C++ getline()
- 20. Python equivalente a C# .Seleccione?
- 21. Equivalente a window.setTimeout() para C++
- 22. Equivalente a Double.doubleToLongBits en C#?
- 23. Objetivo C ==> unichar [] a NSString?
- 24. Puntero a un puntero en objetivo-c?
- 25. Agregar componentes a la ruta - Objetivo C
- 26. Objetivo C Convert int a NSString (iPhone)
- 27. Objetivo C int La conversión a flote
- 28. Objective-C equivalente a "anular" en C#
- 29. Calling dos funciones javascripts onclick
- 30. Mezcla C y objetivo-C
¿Sabes si esto aprovecha 'dispatch_after' en cualquier punto? – Jacksonkr
Supongo que probablemente no (GCD es nivel C y no "sabe" acerca de los selectores, también esta API es anterior a GCD), pero es posible que la use debajo del capó. –