Ich versuche, eine Funktion 10 Mal in zufälligen Abständen zwischen ihnen zu rufen.Aufruf Funktion periodisch in zufälligen Abständen in Swift
Wie kann ich das erreichen?
Ich kam mit einer Methode, aber ist schrecklich hässlich. Es sieht so aus:
var counter = 0
NSTimer.scheduledTimerWithTimeInterval(arc4random_uniform(4)+2, target: self, selector: Selector("createNewTimer"), userInfo: nil, repeats: false)
func createNewTimer(){
// PERFORM STUFF YOU NEED TO
counter++
if counter <= 10{
NSTimer.scheduledTimerWithTimeInterval(arc4random_uniform(4)+2, target: self, selector: Selector("createNewTimer"), userInfo: nil, repeats: false)
}
}
Gibt es eine schönere Möglichkeit, in zufälligen Intervallen die Funktion aufzurufen?
Warum brauchen Sie eine 'After'-Instanz dafür? Sie verwenden diese Instanz nie für irgendetwas. Mach einfach eine Top-Level-Funktion. Außerdem würde ich sehr vorsichtig damit sein, in eine globale Warteschlange zu dispatchen (besonders wenn ich mit der UI arbeite). Das Dispatching in die Hauptwarteschlange wäre weitaus besser für die Thread-Sicherheit. – Hamish
Ich bevorzuge besser strukturierten Code. "Nachher" ist hier eine Basiseinrichtung, die woanders genutzt werden kann. –
Es hängt davon ab, ob die Hauptwarteschlange verwendet werden soll oder nicht. Ich bevorzuge es, die Auslastung dieser Warteschlange so gering wie möglich zu halten. Wenn diese Frage regelmäßige UI-Manipulationen annimmt, stimme ich Ihnen zu. Aber das ist nicht explizit in der Frage angegeben. –