iOS
-
[출시를 향한 여정] 타이머 어플 - 3. LED 플래시를 통해 알림받기iOS 2021. 10. 23. 10:34
목차 1. LED 플래시 알림 2. 구현한 이유 3. 애로사항 1) 백그라운드에서 사용 불가 2) 깜빡임 횟수 1. LED 플래시 알림 옵션 페이지로 스와이핑하면 Flash On 이라는 토글 스위치가 나옵니다. 이 스위치를 통해 Flash 알림을 키거나 끌 수 있습니다. Flash On 상태에서는 집중시간이 끝나거나 휴식시간이 끝날때마다 아이폰 뒷면 LED 플래시가 10번 깜빡입니다. 이 깜빡임을 통해 사용자는 시간이 끝났음을 인지하고 휴식하거나 다시 집중할 수 있게 됩니다. 2. 플래시 알림을 구현한 이유 제가 타이머 어플을 쓰는 곳은 주로 조용한 도서관이나 스터디 카페입니다. 포모도로 공부법에 기반하여 25분 공부, 5분 휴식을 위해서는 공부시간 혹은 휴식시간이 끝날때마다 알림을 받아야 합니다. 가장..
-
[출시를 향한 여정] 타이머 어플 - 2. 시간 설정, 백그라운드/포그라운드 전환 구현iOS 2021. 10. 3. 16:37
목차 1. 현재 앱 개발 상황 2. 챌린지 (어려웠던 점) 3. 앞으로 구현할 것 8월 초에 시작한 타이머 어플 개발이 코테 연습과 개강을 맞이하여 시간을 많이 쏟지 못한데다가 처음 만드는 어플이였기에 생각한 것 보단 속도가 지지부진한 감이 있었습니다. 그리고 백그라운드에서는 특정한 상황을 제외하고는 앱 실행에 제약이 있다는 것을 깨닫고 처음 계획했던 '타이머가 흐르는 시간을 상태바에 출력' 기능이 불가능 하단걸 깨달았습니다. 그렇다면 백그라운드 -> 포그라운드 전환 시에 시간이 지난 것을 어떻게 표현할지에 대한 고민에 부딪혔습니다. 지난 포스트 https://paul-goden.tistory.com/4 [출시를 향한 여정] 타이머 어플 - 1. 왜 타이머 어플을 만들고 싶어요? iOS로 분야를 정한 이..
-
[iOS] GCD : 1. 동시성(Concurrency) 프로그래밍iOS 2021. 9. 18. 16:13
목차 1. GCD 2. 동시성(Concurrency) 3. DispatchQueue 1. GCD GCD(Grand Central Dispatch)는 멀티 스레드를 관리하기 위한 API 입니다. 멀티 스레드를 다루기란 쉽지 않지만, GCD는 작업할 closure를 제출하기만 해도 관리해주기 때문에 편리합니다. Queue의 작업들이 스레드에 할당되고, 사용 가능한 시스템 리소스에 따라 필요한 병렬 처리량을 결정하는 등의 일들이 GCD에 의해 수행되기 때문에 스레드를 직접 관리하는 것보다 편의성이 증가하고 성능이 증가하게 되었습니다. 2. 동시성(Concurrency) 동시성이란 사실 동시에 실행되는 것 처럼 보인다는 말입니다. 하나의 코어를 가지고 두 개의 스레드를 작업한다고 생각해봅시다. 스레드 A가 종료..
-
[iOS] View Controller의 생명주기iOS 2021. 9. 4. 16:26
목차 1. 뷰 컨트롤러 생명주기 2. 생명주기에 따라 호출되는 함수 3. 실험 뷰 컨트롤러 생명주기 뷰 컨트롤러는 생명주기(life cycle)를 가집니다. 애플의 공식문서에서는 뷰 컨트롤러의 생명주기를 아래의 그림으로 표현하고 있습니다. 위의 그림에는 loadView, viewDidUnload 가 없지만 이 두개의 메소드도 생명주기에 포함됩니다. 생명주기에 따라 호출되는 함수 loadView loadView는 뷰컨트롤러에 의해 관리됩니다. 뷰가 없다면 loadView가 호출되고 뷰를 생성한 후 뷰 컨트롤러의 슈퍼뷰로 올립니다. 뷰 컨트롤러가 코드로 생성되었을 때 사용하면 됩니다. 뷰 컨트롤러가 .xib 또는 스토리보드로 생성되었을 때는 이 메소드를 건드리지 않는게 좋습니다. viewDidLoad loa..
-
Delegate 패턴iOS 2021. 8. 28. 16:28
목차 1. Delegate 패턴 정의 2. Delegate 패턴 예시 3. 결론 Delegate 패턴 정의 delegate란 "위임하다, 대리하다"라는 뜻을 가집니다. 영어 뜻에서도 살펴볼 수 있듯이 delegate 패턴이란 객체 A가 할 일을 객체 B에게 맡기는 것입니다. 즉 본인이 할 일을 다른 객체에게 위임하는 것입니다. 다양한 방법으로 사용될 수 있겠지만 간단하게 예를 들자면, 서브뷰가 클릭 되었을 때의 동작을 슈퍼뷰가 대신 하는 것입니다. 서브뷰가 슈퍼뷰에게 자신이 할 일을 위임하는 것입니다. 예시를 통해 알아보겠습니다. Delegate 패턴 예시 동작 모습 커스텀뷰(회색)가 클릭되면 뷰컨트롤러의 레이블이 나타난다. (정확히 말하면 뷰컨트롤러의 레이블 텍스트컬러를 검은색을 변경) 먼저 커스텀뷰 ..
-
[출시를 향한 여정] 타이머 어플 - 1. 타이머 어플을 만드려는 이유iOS 2021. 8. 15. 17:47
목차 1. iOS로 분야를 정한 이유 2. iOS로 진로를 정한 뒤 3. 타이머 어플을 만드려는 이유 4. 현재 진행 상태 1. iOS로 분야를 정한 이유 2021년 1월까지 전문 분야를 무엇으로 해야하나 정하지 못하였습니다. 프론트엔드, 백엔드, 안드로이드, iOS, 서버 등등.. 중에 무엇을 도메인으로 잡아야 행복하게 개발을 할 수 있을까에 대한 생각을 많이 하였습니다. 결국은 iOS를 선택하였는데 그 이유는, 1. 아이폰을 7년째 쓰고 있다. 2. 맥북을 3년째 쓰고 있다. 3. iOS 의 설명하지 못할 스무스함이 좋다. 4. iOS 가 소프트웨어적으로 탄탄하게 설계되었다고 생각한다. 5. 아이폰과 맥의 연동성을 사랑한다. 6. 웹은 사용시 불편함이 느껴지지 않지만 어플은 불편함이 눈에 보인다. 7..