urgente tomo retrasar remedios regla quiero que periodo pastillas para menstruacion limon con como caseros baje anticonceptivos anticonceptivas antes objective-c iphone cocoa-touch uikit

objective c - tomo - ¿Cómo puedo retrasar una llamada a un método por 1 segundo?



pastillas para que no me baje la regla (11)

¿Existe un modo fácil de retrasar una llamada a un método durante 1 segundo?

Tengo un UIImageView que reacciona en un evento táctil. Cuando se detecta el toque, algunas animaciones ocurren en la aplicación. Después de un segundo, quiero llamar a otro método. En este caso, no puedo usar el selector animationDidStop .


Hay una solución Swift 3 de la solución comprobada:

self.perform(#selector(self.targetMethod), with: self, afterDelay: 1.0)

Y está el método

@objc fileprivate func targetMethod(){ }


La mejor manera de hacerlo es:

[self performSelector:@selector(YourFunctionName) withObject:(can be Self or Object from other Classes) afterDelay:(Time Of Delay)];

también puede pasar nil como con el parámetro Object.

ejemplo:

[self performSelector:@selector(subscribe) withObject:self afterDelay:3.0 ];


Puede usar el selector de rendimiento para después de que el método de demora de 0.1 segundos sea llamado para que el siguiente código haga esto.

[self performSelector:@selector(InsertView) withObject:nil afterDelay:0.1];


Puedes hacerlo

[self performSelector:@selector(MethodToExecute) withObject:nil afterDelay:1.0 ];


Tú también puedes:

[UIView animateWithDuration:1.0 animations:^{ self.view.alpha = 1.1; /* Some fake chages */ } completion:^(BOOL finished) { NSLog(@"A second lapsed."); }];

En este caso, debe falsificar algunos cambios en algunas vistas para que funcione la animación. De hecho, es bastante hacky, pero me encantan las cosas basadas en bloques. O termine la respuesta de @mcfedr a continuación.

waitFor(1.0, ^ { NSLog(@"A second lapsed"); });

typedef void (^WaitCompletionBlock)(); void waitFor(NSTimeInterval duration, WaitCompletionBlock completion) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, duration * NSEC_PER_SEC), dispatch_get_main_queue(), ^ { completion(); }); }


También puedes usar un bloque

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ [object method]; });

La mayoría de las veces querrá usar dispatch_get_main_queue, aunque si no hay UI en el método, podría usar una cola global .

Editar:

Swift 3 versión:

DispatchQueue.main.asyncAfter(deadline: .now() + 1) { object.method() }

Igualmente, DispatchQueue.global().asyncAfter(... también podría ser una buena opción.


Usar en Swift 3

perform(<Selector>, with: <object>, afterDelay: <Time in Seconds>)


Ya hay muchas respuestas y todas son correctas. En caso de que desee utilizar el dispatch_after , debe buscar el fragmento que se incluye dentro de la Code Snippet Library fragmentos de Code Snippet Library en la parte inferior derecha (donde puede seleccionar los elementos de la UI ).

Entonces solo necesita llamar a este fragmento escribiendo el despacho en el código:


NOTA: esto detendrá todo el hilo, no solo el método.
Haga una llamada para dormir / esperar / detenerse durante 1000 ms justo antes de llamar a su método?

Sleep(1000); // does nothing the next 1000 mSek Methodcall(params); // now do the real thing

Editar: la respuesta anterior se aplica a la pregunta general "¿Cómo puedo retrasar una llamada a un método durante 1 segundo?", Que era la pregunta al momento de la respuesta (de hecho, la respuesta se dio dentro de los 7 minutos de la pregunta original: )). No se proporcionó información sobre el idioma en ese momento, por lo que amablemente deja de quejarte acerca de la forma correcta de usar sleep i XCode y la falta de clases ...


Swift 2.x

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC))) dispatch_after(delayTime, dispatch_get_main_queue()) { print("do some work") }

Swift 3.x - y - Swift 4

DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { print("do some work") }