Today I Learned

20210614 - Egg Timer project -5

돌맹이시터 2021. 6. 15. 00:26

 

 

Challenge에서 작성했더너 코드를 테스트했을 때

잘 작동되는 듯 했으나 사실은 문제점이 있었다.

 

버튼을 눌렀을 때 타이머가 정상적으로 작동하는 듯 했으나

다른 버튼을 다시 눌러보면,

타이머가 내가 원했던 시간 간격대로 (1초에 한 번) 출력되지 않고 더 빠르게 출력되는 것을 확인할 수 있었다.

추가로 버튼을 누를 때마다 카운터가 출력되는 시간 간격은 계속해서 빨라졌다.

 

 

원인은 버튼을 누를 때마다 새로 타이머가 생성되고, 기존의 타이머를 멈추지 않았기 때문이다.

이 문제점을 해결하기 위해

IBAction 코드블럭의 앞부분에 타이머를 무효화시키는(멈추는) 코드를 작성해야 한다.

 

1. timer 변수 추가

2. timer = Timer.scheduledTimer~~~ 

3. 코드 앞에 timer.invalidate() 추가

 

 

 

위처럼 코드를 일부 수정하여 문제점을 해결할 수 있었다.

 

 

 

 

 

Challenge ) 

 

타이머가 끝났을 때 Label이 'Done'으로 바뀌도록 하기

(테스트할 때 eggTimes 값을 짧게 바꿔두고 테스트하는 게 빠름)

 

 

->

label을 IBOutlet을 만들어 연결해주고

타이머의 카운터가 0이 될 때 label의 text가 바뀌도록 수정했다.

 

 

추가로,

작성했던 코드를 전반적으로 수정했는데

counter 변수를 Int?로 선언하는 대신 특정 값(60)으로 선언해주고

@objc func 에서 출력함수 부분을 수정했다.

이전에는 optional이기 때문에 원하는대로 출력되지 않고 (optional 3)seconds.. 등으로 표기가 되었지만 

코드를 수정한 이후에 제대로 출력이 되는 것을 확인할 수 있었다.

 

 

 

 

 

'Today I Learned' 카테고리의 다른 글

20210616 Quizzler project -1 & 2D array  (0) 2021.06.17
20210615 Egg Timer project -6 & Debug  (0) 2021.06.15
20210613 - Egg Timer project -4  (0) 2021.06.14
20210612 Egg Timer project -3  (0) 2021.06.13
20210611 Egg Timer project -2  (0) 2021.06.12