2011-09-03 18 views
10

En mi programa iOS, quiero que una función se pause por 1 segundo. ¿Qué código tengo que escribir para hacer esto?Cómo pausar el tiempo en iOS Programación

+8

Es difícil responder esto correctamente sin saber por qué quiere pausar por un segundo. A menos que tenga cuidado, simplemente bloqueará la IU por un segundo que es una experiencia de usuario "muy mala". – Abizern

Respuesta

24

puede utilizar uno de estos: sleep(1); o wait(1);

O puede utilizar [NSThread sleepForTimeInterval:1.0]

Y también performSelector:withObject:afterDelay

+3

O, coloque el resto de las tareas en un bloque y programe con 'dispatch_after';) – Abizern

+3

Dormir es casi seguro que no es una buena idea. Si Twinkle ya no sabe cómo usar 'sleep', dudo que e esté usando un hilo de fondo. Eso significa pausar el hilo de UI. –

+1

Estoy intentando pausar un hilo de fondo. – Twinkle

2

es más reciente que el IOS son bloques de terminación. Si necesita realizar alguna acción luego de que un controlador de vista aparece, por ejemplo, ahora puede usar bloques. Recientemente utilicé este método para descartar un controlador de vista de redacción de mensaje y luego mostrar el controlador de vista actual si fue exitoso.

manera antigua:

[controller dismissModalViewControllerAnimated:YES]; 
// Use an NSThread or performSelector:withObject:afterDelay 

nueva forma:

[controller dismissViewControllerAnimated:YES completion:^{ 
    if (result != MessageComposeResultCancelled){ 
    // If cancelled remain on current screen, else pop to parent view controller 
    [self.navigationController popViewControllerAnimated:YES]; 
    } 
}]; 
3

Otra manera de hacer esto es:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{//Place code here}); 

sueño() y wait() son a veces despreciado, pero siempre y cuando usted entiende qué está sucediendo úsela a su libre albedrío

Cuestiones relacionadas