앱강의 듣는 중
커밋하는 습관은 좋다
양이 너무 많은 것 같아서 합치려다가 그냥 분리하기로 했다.
A timer that fires after a certain time interval has elapsed, sending a specified message to a target object.
class Timer : NSObject
scheduledTimer(withTimeInterval:repeats:block:)
Creates a timer and schedules it on the current run loop in the default mode.class func scheduledTimer( withTimeInterval interval: TimeInterval, repeats: Bool, block: @escaping @Sendable (Timer) -> Void ) -> Timer
// 전체적으로 초에 따른 동작을 컨트롤 하기위한 전역변수
var number: Int = 0
let seconds = Int(slider.value * 60)
// 정수형은 나머지를 버리는 변환을 함
// target 을 self 로 가르키고 있으므로
(여기서 self는 UIViewController의 인스턴스 의미)
UIViewController.doSomethingAfter1Second의 주소 즉 인스턴스의 메서드 주소를 selector로 받아서(연결해서) 매 초마다 실행하는 효과
(기존 objc 에서 사용하던 기법으로 함수앞에 @objc 필요)
Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(doSomethingAfter1Second), userInfo: nil, repeats: true)
// Timer 은 클래스로 선언되어있으므로 인스턴스를 weak 선언
weak var timer: Timer?
// 위에서 Timer의 인스턴스 timer를 만들때 weak 으로 선언하여 만들었기 때문에 클로져가 timer를 [self] 로 강하게 가르켜도 강한참조 사이클이 일어나지 않는다
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [self] _ in
구글검색
키워드확인
스택오버플로우
공식문서확인
(사운드, 타이머, 셀렉터)