본문 바로가기

timer

(3)
[ISSUE] 저전력 모드 화면 꺼짐 방지 현재 프로젝트에서 3분에서 5분 사이의 Audio 파일이 재생되는 ViewController가 있었다. 그리고 그 VC는 Audio의 재생이 끝날때까지 특정 animation을 동작하는 프로세스를 가지고 있어 무엇보다 시청각이 주 컨텐츠인 VC였다. 하지만 사용자가 디바이스의 설정에서 저전력 모드를 활성화 했을때 일정 시간이 지나면 앱의 화면이 잠겨 버리는 issue가 발생했다. 해당 VC만큼은 저전력 모드 활성화로 인한 화면 자동 잠금이 이루어지지 않아야 한다는 요청이 있었다. 그리하여 idleTimerDisabled이라는 Bool 타입의 속성을 컨트롤하여 issue를 해결했고 그 과정을 포스팅하겠다. 일단 Apple 공식 문서의 설명을 참고하자면 idleTimerDisabled이라는 속성의 기본값은 ..
[IOS] Timer 이번 포스팅에서는 Timer를 사용해서 정해진 interval 간격을 두고 label의 text를 업데이트 해주는 과정을 간단하게 포스팅하려한다. 먼저 업데이트 상황을 눈으로 볼 수 있게 정중앙에 label을 하나 위치시키겠다. 그리고 count라는 변수를 만들어서 값이 바뀌면 label의 text를 변경해주게끔 옵저버 프로퍼티를 사용하겠다. var count = 0 { didSet { label.text = String(count) } } Timer가 작동되어 1초마다 count값을 변경시켜주도록 하면 label의 text의 값이 변경된 값으로 변경되는걸 볼 수 있을것이다. Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [weak self] (..
[IOS] User Event & MainRunLoop 프로젝트를 진행하는데 MainRunLoop에 관여하는 부분에 있어 버그가 발생했고 이부분에 대해서 포스팅 하려 한다. 버그 발생 부분과 MainRunLoop에 대해서 알아보기 전에 선행으로 AppLifeCycle에 부분적으로 먼저 알고 가보도록 하겠다. 일단 사용자가 앱의 아이콘을 터치했을때 ( 앱을 시작할때 ) C언어 기반의 프로젝트는 main이라는 함수의 호출이 곧 앱의 시작이 된다. IOS의 앱 또한 Object-C 기반임으로 main함수가 호출이 된다. 다만 UIKit framework에서 main함수를 관리 하기 때문에 개발자는 따로 main에 관여해주지 않아도 된다. 그리고 UIKit framework에서 main을 호출 하면서 UIApplicationMain 함수를 호출 하는데이 과정을 통해..