Questo è un po 'di codice, che dimostra come chiamare una funzione (ritardata) con AND senza un parametro.
Utilizzare questo in un nuovo progetto in Xcode (singleViewApplication) e inserire il codice nel viewController di serie:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: Selector("delayedFunctionWithoutParameter:"), userInfo: nil, repeats: false)
let myParameter = "ParameterStringOrAnyOtherObject"
NSTimer.scheduledTimerWithTimeInterval(4.0, target: self, selector: Selector("delayedFunctionWithParameter:"), userInfo: myParameter, repeats: false)
}
// SIMPLE TIMER - Delayed Function Call
func delayedFunctionWithoutParameter(timer : NSTimer) {
print("This is a simple function beeing called without a parameter passed")
timer.invalidate()
}
// ADVANCED TIMER - Delayed Function Call with a Parameter
func delayedFunctionWithParameter(timer : NSTimer) {
// check, wether a valid Object did come over
if let myUserInfo: AnyObject = timer.userInfo {
// alternatively, assuming it is a String for sure coming over
// if let myUserInfo: String = timer.userInfo as? String {
// assuming it is a string comming over
print("This is an advanced function beeing called with a parameter (in this case: \(myUserInfo)) passed")
}
timer.invalidate()
}
}
avviso, che in ogni caso è necessario implementare la funzione in ritardo con il parametro (timer: NSTimer) per poter invalidare (terminare, terminare) il timer. E con il "timer" del passante hai anche accesso a userInfo (e lì puoi mettere qualsiasi Object, non solo String-Objects, come pure tipi di raccolta come array e dizionari).
originali Mele documentazioni dice "" -> Il timer si passa come argomento, quindi il metodo avrebbe adottato il seguente schema: - (void) timerFireMethod: (NSTimer *) timer leggere integralmente ->here
Se si utilizza il 'init' del timer è necessario' È necessario aggiungere il nuovo timer a un ciclo di esecuzione, utilizzando addTimer: forMode: '. È la seconda frase nella descrizione del documento. Altrimenti usa 'scheduledTimerWithTimeInterval' che probabilmente è quello che stavi cercando. – Firo
Perché i voti negativi di più persone hanno fornito risposte diverse? – RobertJoseph
Non posso dirlo con certezza, ma probabilmente è perché la risposta non è difficile da trovare, come ho sottolineato prima. È giusto nei documenti. Se dovessi fare clic su 'option' sul metodo, avresti trovato la soluzione entro 5 secondi e senza nemmeno dover lasciare Xcode. – Firo