Swift TIL(63) - 타이머 기초, 약한참조 강한참조사이클 방지 캡쳐리스트 , 셀렉터

웰디(Well-D)·2023년 10월 29일
0

Sweet & Soft, SWIFT

목록 보기
61/76

앱강의 듣는 중
커밋하는 습관은 좋다
양이 너무 많은 것 같아서 합치려다가 그냥 분리하기로 했다.

TIL 63

Timer

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)
 // 정수형은 나머지를 버리는 변환을 함
        

selector 문법 과 약한참조 / 강한참조 사이클 방지 / 캡쳐리스트 [self] 와 [weakSelf]

// target 을 self 로 가르키고 있으므로
(여기서 selfUIViewController의 인스턴스 의미) 
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
       

구글검색
키워드확인
스택오버플로우
공식문서확인
(사운드, 타이머, 셀렉터)

profile
Wellness 잘사는 것에 진심인 웰디입니다. 여러분의 몸과 마음, 통장의 건강을 수호하고싶어요. 느리더라도, 꾸준히

0개의 댓글