Je me demande juste quelle est la meilleure implémentation de multi-temporisateurs polyvalents optimisés pour la mémoire dans swift. Les minuteurs qui sont concurrentes et ont référence faible avec Dispatch? J'ai essayé d'implémenter deux minuteurs dans un contrôleur de vue et j'ai eu une erreur.Comment implémenter la minuterie multiple optimisée dans swift?
un de mes minuterie était comme ça:
func startOnPlayingTimer() {
let queue = DispatchQueue(label: "com.app.timer")
onPlayTimer = DispatchSource.makeTimerSource(queue: queue)
onPlayTimer!.scheduleRepeating(deadline: .now(), interval: .seconds(4))
onPlayTimer!.setEventHandler { [weak self] in
print("onPlayTimer has triggered")
}
onPlayTimer!.resume()
}
un autre était:
carouselTimer = Timer.scheduledTimer(timeInterval: 3, target: self,selector: #selector(scrollCarousel), userInfo: nil, repeats: true)
Je voudrais simplement créer plusieurs instances de 'Timer'. Quelle erreur obtenez vous? – Paulw11
@ Paulw11 En fait, je pourrais l'implémenter avec 'Timer' aujourd'hui. mais je doute que cette fonction soit sûre? et a une "référence faible"? Je cherche à implémenter ceci avec Dispatch et le rende sûr de fil et mémoire optimisée. – Omnia
La sécurité des filetages et les références fortes cicrcular sont des issues séparées à la minuterie. L'approche sans temporisation vous donnera la sécurité inhérente de fil. La sécurité du fil dépend de ce que vous faites dans la fermeture qui est envoyée par la minuterie. Les minuteries peuvent avoir un impact sur la consommation d'énergie et, en fait, Apple conseille de ne pas utiliser les minuteurs comme technique de synchronisation; https://developer.apple.com/library/content/documentation/Performance/Conceptual/EnergyGuide-iOS/MinimizeTimerUse.html. – Paulw11