Lo intenté
var timer = NSTimer()
timer(timeInterval: 0.01, target: self, selector: update, userInfo: nil, repeats: false)
Pero recibí un error diciendo
'(timeInterval: $T1, target: ViewController, selector: () -> (), userInfo: NilType, repeats: Bool) -> $T6' is not identical to 'NSTimer'
ios
nstimer
nstimeinterval
swift
usuario3225917
fuente
fuente

Respuestas:
Esto funcionará:
Para Swift 4, el método del que desea obtener el selector debe estar expuesto a Objective-C, por lo tanto, el
@objcatributo debe agregarse a la declaración del método.fuente
Evento repetido
Puede usar un temporizador para realizar una acción varias veces, como se ve en el siguiente ejemplo. El temporizador llama a un método para actualizar una etiqueta cada medio segundo.
Aquí está el código para eso:
Evento retrasado
También puede usar un temporizador para programar un evento único durante algún tiempo en el futuro. La principal diferencia con el ejemplo anterior es que usa en
repeats: falselugar detrue.El ejemplo anterior llama a un método llamado
delayedActiondos segundos después de que se establece el temporizador. No se repite, pero aún puede llamartimer.invalidate()si necesita cancelar el evento antes de que ocurra.Notas
Relacionado
fuente
Actualizado a Swift 4, aprovechando userInfo:
fuente
NSTimerobjetoA partir de iOS 10, también hay un nuevo método de fábrica de temporizador basado en bloques que es más limpio que usar el selector:
fuente
_ =y comenzarTimer?Swift 3, pre iOS 10
Swift 3, iOS 10+
Notas
@objcfuente
timeIntervalComprueba con:
Swift 2
Swift 3, 4, 5
fuente
selfser? UIView está bien?Deberá usar el temporizador en lugar del NSTimer en Swift 3.
Aquí hay un ejemplo:
fuente
Swift 5
Personalmente prefiero el temporizador con el cierre de bloque:
fuente
para swift 3 y Xcode 8.2 (es bueno tener bloques, pero si compila para iOS9 Y desea información de usuario):
...
fuente
Temporizador simple (Swift 3.1)
¿Por qué?
Esta es una clase de temporizador simple en Swift que le permite:
Uso:
Código:
fuente
Y crea diversión por el nombre createEnemy
fuente
Primero declara tu temporizador
Luego agregue una línea en viewDidLoad () o en cualquier función que desee iniciar el temporizador
Esta es la función a la que devolverá la llamada para hacer algo que debe ser @objc
fuente
En Swift 3 algo así con @objc:
fuente
Si inicia el método del temporizador
luego agréguelo al bucle usando el método que no se llamará a otro selector
NOTA: Si desea que esto se repita, haga que las repeticiones sean verdaderas y mantenga la referencia del temporizador; de lo contrario, no se llamará al método de actualización.
Si estás usando este método.
mantenga una referencia para su uso posterior si las repeticiones son verdaderas.
fuente
Traté de hacer en una clase NSObject y esto funcionó para mí:
fuente
NSTimer ha cambiado de nombre a Timer en Swift 4.2. esta sintaxis funcionará en 4.2:
fuente