Timer 클래스를 사용하여 매 x 초마다 특정 코드를 실행하고 있습니다. 이 코드에서 어떤 일이 발생하면 타이머를 무효화하여 "루프"를 중지하고 싶습니다.변수를 설정하지 않고 타이머를 무효화하는 방법
: 엑스 코드 나에게 경고를 제공하므로,
let timer = Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: { timer in //when something happens timer.invalidate() })
그러나, 나는 내 코드에서 다른 곳이 타이머를 사용하지 마십시오
나는 다음을 수행하여이 작업을 수행하기 위해 관리해야 불변의 값 'timer'의 초기화는 사용되지 않았습니다. '_'에 대한 할당으로 대체하거나 제거하는 것을 고려하십시오.
명백하게 이것으로 내 앱이 실행되는 것을 멈추지는 않지만 경고를 없애고 싶습니다.
Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: { timer in
//do stuff
})
여전히 작동하지만 그때 타이머를 무효화하는 방법을 모른다 :
난 그냥 사용하는 것을 알고있다. 클로저 안의 invalidate()
을 호출하면 작동하지 않습니다. (오래 알았지 만 어쨌든 시도해 보았습니다.)
일반적으로 SO에서 Timer
질문을 볼 때 사람들은 전역 타이머 변수를 사용하므로 쉽게 무효화 할 수 있습니다. 그러나 일단 완료되면 타이머 객체를 사용하지 않기 때문에 필요하지 않기 때문에이 작업을 원하지 않습니다.
나는 이것이 매우 일반적인 문제 일 것이라고 생각했지만 도움이되는 것을 찾을 수 없었습니다. 누구든지 효과적으로 변수를 설정하지 않고 타이머를 무효화 할 수있는 방법에 대한 어떤 생각을 밝힐 수 있습니까?
아, 그렇습니다. 블록 var에 대해 잊어 버렸습니다. 이제는 왜 필요한지 이해합니다.) –
10 분 후에이 대답을 받아 들일 수 있습니다. –
@BenjaminLowry Welcome mate :) –