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 |