¿Cómo desencadenar un retraso, digamos que quiero llamar a un método (una vez) en 3 segundos a partir de ahora, y cómo puedo cancelar esa llamada si es necesario?¿Llamada retrasada, con posibilidad de cancelación?
Respuesta
También puede usar -[NSObject performSelector:awithObject:afterDelay:]
y +[NSObject cancelPreviousPerformRequestsWithTarget:selector:object]
.
en su cabecera ..
NSTimer *timer;
cuando se quiere configurar ..
timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(yourMethod:) userInfo:nil repeats:NO];
cuando se desea cancelar ..
[timer invalidate];
No olvide retener el temporizador cuando lo configure y lo suelte después de invalidarlo. Confiar en el ciclo de ejecución para retenerlo es una mala forma y corre el riesgo de romperse si Apple alguna vez cambia la implementación. –
Uso NSTimer. Use esto para configurar una llamada al método en tres segundos. Sólo se llama una vez:
[NSTimer scheduledTimerWithTimeInterval: 3
target: self
selector: @selector(method:)
userInfo: nil
repeats: NO];
método debe tener este aspecto:
- (void) method: (NSTimer*) theTimer;
Puede pasar parámetros en el método que utiliza userInfo (ajustado a nula en el anterior ejemplo). Se puede acceder en el método como [theTimer userInfo].
Utilice el invalidar el método en NSTimer para cancelarlo.
¿El método TIENE que verse así? ¿Y hay algo que hacer con la instancia de NSTimer aprobada? –
Creo que estoy en lo cierto al decir que el método tiene que ser así. El parámetro userInfo se usa para pasar datos adicionales. Es acceso como [la información de usuario del temporizador] en su método. –
- 1. ¿Tiempo de redirección retrasada?
- 2. Cancelación con WaitHandle
- 3. ¿Invocación retrasada del envío?
- 4. desencadenar un evento de vuelo estacionario retrasada con jQuery
- 5. Cancelación de eco
- 6. Cancelación de ruido activo
- 7. Evite la carga retrasada de font-face
- 8. Cancelación de un PendingIntent
- 9. com.jcraft.jsch.JSchException: cancelación de autenticación
- 10. Cancelación de eco acústica (AEC) con Speex y DirectSound
- 11. Parallel.ForEach - Elegante cancelación
- 12. Posibilidad de una galería curva
- 13. Cancelación del ejecutor
- 14. Cancelación de ListBox SelectedIndexChange Evento
- 15. async/aguardar mecanismo de cancelación
- 16. Inhabilitar cancelación de ruido HTC
- 17. Cancelación de la solicitud de usuario con Node.js/formidable
- 18. onbeforeunload cancelación de diálogo con window.location.href IE8 fallo
- 19. Prácticas recomendadas de cancelación de tareas
- 20. Configuración de cancelación de eco Speex
- 21. ¿Alguna posibilidad de que javafuse pueda funcionar?
- 22. Cancelación de cadena de tareas de apio?
- 23. Cancelación de eco acústico en Flash/Flex usando librerías nativas
- 24. ¿Cómo forzar la cancelación de una tarea?
- 25. ¿Puntos de cancelación en controladores de señal?
- 26. Cancelación de una consulta de Entity Framework
- 27. Detección de cancelación de suscripción Paypal
- 28. Comportamiento extraño en linq C# en la ejecución retrasada
- 29. Cancelación de eco acústico en Java
- 30. MySQL CANCELACIÓN de la subconsulta como condición
+ cancelPreviousPerformRequestsWithTarget: selector: object: es un método de clase (+), no un método de instancia (-). Es por eso que toma el objetivo (instancia) como uno de sus argumentos. –
¡Ups, tienes razón, gracias por la captura! –
Este es mucho más fácil de usar que NSTimer. ¿O me estoy perdiendo algo? –