Timer

Groot·2022년 8월 24일
0

TIL

목록 보기
59/148
post-thumbnail

TIL

🌱 난 오늘 무엇을 공부했을까?


📌 Timer - 공식문서

  • 특정 시간 간격이 경과한 후 실행되어 지정된 메시지를 대상 개체에 보내는 타이머입니다.
class Timer : NSObject

📍 Comparing Repeating and Nonrepeating Timers

  • Nonrepeating Time는 한 번 실행된 다음 자동으로 무효화되어 타이머가 다시 실행되는 것을 방지합니다.
  • Repeating Time는 실행된 다음 동일한 실행 루프에서 자신을 다시 예약합니다.

📍 Timer Tolerance

  • iOS 7 이상 및 macOS 10.9 이상에서는 타이머 허용 오차(허용 오차)를 지정할 수 있습니다.
  • 이러한 유연성은 타이머가 작동할 때 시스템이 절전 및 응답성을 높이기 위해 최적화하는 능력을 향상시킵니다.
  • 일반적인 규칙은 반복 타이머에 대해 허용 오차를 간격의 최소 10%로 설정합니다.

📍 Scheduling Timers in Run Loops

  • 타이머는 한 번에 하나의 런 루프에만 등록할 수 있지만 해당 런 루프 내에서 여러 런 루프 모드에 추가할 수 있습니다.
  • 타이머를 만드는 방법에는 세 가지가 있습니다.
    • scheduledTimer(timeInterval:invocation:repeats:) 또는 scheduledTimer(timeInterval:target:selector:userInfo:repeats:) 클래스 메서드를 사용하여 기본 모드에서 타이머를 생성하고 현재 런 루프에서 예약합니다.
    • init(timeInterval:invocation:repeats:) 또는 init(timeInterval:target:selector:userInfo:repeats:) 클래스 메서드를 사용하여 런 루프에서 예약하지 않고 타이머 객체를 생성합니다. (생성 후 해당 RunLoop 객체의 add(_:forMode:) 메소드를 호출하여 수동으로 런 루프에 타이머를 추가해야 합니다.)
    • 타이머를 할당하고 init(fireAt:interval:target:selector:userInfo:repeats:) 메서드를 사용하여 초기화합니다. (생성 후 해당 RunLoop 객체의 add(_:forMode:) 메소드를 호출하여 수동으로 런 루프에 타이머를 추가해야 합니다.)
  • 런 루프에서 예약되면 타이머가 무효화될 때까지 지정된 간격으로 타이머가 실행됩니다.
  • 비반복 타이머는 실행된 직후에 자체적으로 무효화됩니다.
  • 그러나 반복 타이머의 경우 invalidate() 메서드를 호출하여 타이머 개체를 직접 무효화해야 합니다.
  • 이 메소드를 호출하면 현재 런 루프에서 타이머 제거를 요청합니다.
  • 결과적으로 타이머가 설치된 동일한 스레드에서 항상 invalidate() 메서드를 호출해야 합니다.

📍 Creating a Timer

class func scheduledTimer(withTimeInterval: TimeInterval, repeats: Bool, block: (Timer) -> Void) -> Timer`

타이머를 생성하고 기본 모드의 현재 런 루프에서 예약합니다.

class func scheduledTimer(timeInterval: TimeInterval, target: Any, selector: Selector, userInfo: Any?, repeats: Bool) -> Timer

타이머를 생성하고 기본 모드의 현재 런 루프에서 예약합니다.

class func scheduledTimer(timeInterval: TimeInterval, invocation: NSInvocation, repeats: Bool) -> Timer

타이머를 생성하고 기본 모드의 현재 런 루프에서 예약합니다.

init(timeInterval: TimeInterval, repeats: Bool, block: (Timer) -> Void)

지정된 개체 및 선택기를 사용하여 타이머 개체를 초기화합니다.

init(timeInterval: TimeInterval, target: Any, selector: Selector, userInfo: Any?, repeats: Bool)

지정된 개체 및 선택기를 사용하여 타이머 개체를 초기화합니다.

init(timeInterval: TimeInterval, invocation: NSInvocation, repeats: Bool)

지정된 개체 및 선택기를 사용하여 타이머 개체를 초기화합니다.

init(fire: Date, interval: TimeInterval, repeats: Bool, block: (Timer) -> Void)

지정된 블록을 사용하여 지정된 날짜 및 시간 간격에 대한 타이머를 초기화합니다.

init(fireAt: Date, interval: TimeInterval, target: Any, selector: Selector, userInfo: Any?, repeats: Bool)

지정된 개체와 선택기를 사용하여 타이머를 초기화합니다.

📍 Firing a Timer

func fire()

타이머의 메시지가 대상으로 보내지도록 합니다.

📍 Stopping a Timer

func invalidate()

타이머가 다시 실행되는 것을 중지하고 런 루프에서 제거를 요청합니다.

📍 Retrieving Timer Information

var isValid: Bool

타이머가 현재 유효한지 여부를 나타내는 부울 값입니다.

var fireDate: Date

타이머가 실행되는 날짜입니다.

var timeInterval: TimeInterval

타이머의 시간 간격(초)입니다.

var userInfo: Any?

수신자의 userInfo 객체.

📍 Configuring Firing Tolerance

var tolerance: TimeInterval

타이머가 실행될 예정된 실행 날짜 이후의 시간입니다.
Timer공식문서

profile
I Am Groot

0개의 댓글