iOS Timer 사용법
목차
다른 메서드에서도 활용해야 할 경우
weak var로 선언하여 순환 참조 방지.
weak var timer: Timer?
func xxx() {
// [self] 붙일 경우 클로저 내부에서 모든 변수에 따로 붙일 필요 없음
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [self] _ in
let seconds = Int(slider.value * 60)
if seconds > 0 {
slider.value = Float(seconds - 1) * sliderScale
}
updateSlider()
if seconds == 0 {
timer?.invalidate() // ? 붙이는 것 필수
AudioServicesPlayAlertSound(SystemSoundID(1322))
initUI()
}
}
}
func yyy() {
timer?.invalidate()
}한 곳에서만 사용할 경우
클로저 파라미터를 _ 대신 변수명으로 받아서 사용.
func xxx() {
//[self] 붙일경우 클로저 내부에서 모든 변수에 따로 붙일 필요 없음 _ -> timer(변수로 변경)
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [self] timer in
let seconds = Int(slider.value * 60)
if seconds > 0 {
slider.value = Float(seconds - 1) * sliderScale
}
updateSlider()
if seconds == 0 {
timer.invalidate()
AudioServicesPlayAlertSound(SystemSoundID(1322))
initUI()
}
}
}