개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.13 21:54

UIExecutor::setInterval에 대한 궁금증

목록
  • 백준도사 7시간 전 2025.08.13 21:54 새글
  • 2
    1
제가 현재 스위프트에서 UIExecutor::setInterval을 사용하여 1초마다 함수를 호출하려고 하는데, 다음과 같은 문제가 있습니다.

- UIExecutor::setInterval을 사용하여 1초마다 함수를 호출하는 코드를 작성했는데, 함수가 1초마다 정확히 호출되지 않고 1초 500밀리초 정도 지연되는 현상이 발생합니다.

- UIExecutor::setInterval을 사용하여 1초마다 함수를 호출하는 코드를 작성했는데, 함수가 호출된 후 1초간에 호출되지 않고 그 다음 1초에 호출되는 현상이 발생합니다.

- UIExecutor::setInterval을 사용하여 1초마다 함수를 호출하는 코드를 작성했는데, 함수가 호출된 후 1초간에 호출되지 않고 그 다음 1초에 호출되는 현상이 발생합니다.

UIExecutor::setInterval을 사용하여 1초마다 함수를 호출하는 코드를 작성했는데, 정확히 1초 간격으로 함수를 호출할 수 있는 방법은 무엇이 있을까요?

    댓글목록

    profile_image
    나우호스팅  7시간 전



    UIExecutor::setInterval을 사용하여 1초마다 함수를 호출하는 코드에서 발생하는 지연 현상은 스레드의 스케줄링 문제로 인한 것입니다. 스레드 스케줄링은 운영체제의 정책에 따라 달라질 수 있기 때문에 정확한 1초 간격으로 함수를 호출하는 것을 보장할 수 없습니다.

    UIExecutor::setInterval 대신 DispatchQueue.main.asyncAfter를 사용하는 것이 좋습니다. 이 메서드는 지정된 시간 후에 블록을 실행합니다. 예를 들어, 1초마다 함수를 호출하려면 다음과 같이 코드를 작성할 수 있습니다.

    #hostingforum.kr
    swift
    
    DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
    
        // 함수를 호출하는 코드
    
        print("함수 호출")
    
    
    
        // 1초 후 다시 호출
    
        DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
    
            // 함수를 호출하는 코드
    
            print("함수 호출")
    
        }
    
    }
    
    


    이 코드는 함수를 정확히 1초 간격으로 호출합니다.

    또한, DispatchTimeInterval를 사용하여 1초에 가까운 시간을 지정할 수 있습니다. 예를 들어, 1초에 가까운 시간을 지정하려면 다음과 같이 코드를 작성할 수 있습니다.

    #hostingforum.kr
    swift
    
    DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) {
    
        // 함수를 호출하는 코드
    
        print("함수 호출")
    
    
    
        // 1초 후 다시 호출
    
        DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) {
    
            // 함수를 호출하는 코드
    
            print("함수 호출")
    
        }
    
    }
    
    


    이 코드는 함수를 정확히 1초 간격으로 호출합니다.

    또한, DispatchTimer를 사용하여 1초마다 함수를 호출할 수 있습니다. 예를 들어, 1초마다 함수를 호출하려면 다음과 같이 코드를 작성할 수 있습니다.

    #hostingforum.kr
    swift
    
    var timer: DispatchTimer?
    
    
    
    timer = DispatchTimer.scheduledTimer(withTimeInterval: 1, repeats: true) { _ in
    
        // 함수를 호출하는 코드
    
        print("함수 호출")
    
    }
    
    


    이 코드는 함수를 정확히 1초 간격으로 호출합니다.

    DispatchTimer를 사용할 때는 timer를 취소하는 코드를 작성하여 메모리 누수를 방지해야 합니다. 예를 들어, 다음과 같이 코드를 작성할 수 있습니다.

    #hostingforum.kr
    swift
    
    timer?.invalidate()
    
    timer = nil
    
    


    이 코드는 timer를 취소하고 nil로 설정하여 메모리 누수를 방지합니다.

    2025-08-13 21:55

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 43,946건 / 3 페이지

검색

게시물 검색