[iOS] Coordinator Pattern
·
iOS
안녕하세요. 오늘은 Coordinator Pattern에 대해 알아보겠습니다. 먼저, Coordiantor가 무엇인지 알아보겠습니다. Coordinator 란? iOS를 공부하다 보면, 어느 순간 MVC, MVVM, MVP, VIPER 등 여러 Architecture를 접하게 됩니다. 여기서 MVC-C, MVVM-C 등 뒤에 C가 붙는 것을 보신 적이 있으시다면, C가 Coordinator를 의미하게 됩니다. 또한 Coordinator는 VIPER 패턴의 R(Router)과 같은 역할을 수행합니다. 즉, Coordinator는 화면 간 전환을 담당합니다. 좀 더 자세히는 해당 화면(ViewController)에 필요한 의존성을 주입하고, ViewController 객체를 생성해 화면을 전환하는 역할을 수..
[Swift] Swift Concurrency와 GCD
·
Swift
안녕하세요. 저번 글에서 Race Condition과 Thread Safe에 대해 알아봤었는데 비동기에 대해서 공부하다 보니 자연스럽게 WWDC 2021에서 소개된 Swift Concurrency에 대해서도 관심이 생겼습니다. 그래서 이번 기회에 GCD Swift Concurrency에 대해 간단하게 알아보고 사용법을 정리해 볼까합니다. GCD, Swift Concurrency 란??? GCD 기존 Swift에서 동시성 프로그래밍을 구현하기 위해 단연코 GCD API를 주로 사용했습니다. GCD는 비동기로 실행되고자 하는 코드 블록을 DispatchQueue라는 선입선출 Queue에 넣어 스레드에 작업을 할당하는 방식입니다. GCD는 클로저를 사용해 DispatchWorkItem라는 실행해야 할 작업 객..
[Swift] Race Condition과 Thread Safe
·
Swift
비동기적으로 기능을 구현하다 보면, 순차적으로 코드가 실행되는 것이 아니다 보니 주의해야 할 점이 생긴다. 그중 Race Condition과 해결책인 Thread Safe에 대해 알아보고자 한다.Race ConditionRace Condition 이란, 여러 Thread가 하나의 자원에 동시에 접근해서 자원이 변질되어 원하는 결과가 나오지 않는 현상을 뜻한다. 비동기적으로 코드가 실행되면, 여러 Thread 동시에 하나의 자원에 접근하는 경우가 생긴다. 이때 Thread가 한 자원 접근해 해당 자원에 변화를 주게 되면, Race Condition 발생되고, 원하는 결과를 얻기 힘들어진다. 코드를 통해 이해해 보자.var books = ["어린왕자", "백설공주", "해리포터", "신데렐라", "알라딘",..
[iOS]PhotoKit 알아보기(2)
·
iOS
PhotoKit 통해 기기 사진 라이브러리에 접근 권한을 받아오는 방법에 대해서 PhotoKit 알아보기(1) 글을 참고하시기 바랍니다. 이번 글에서는 부여받은 권한을 이용하여 기기의 저장된 이미지 Asset을 가져오는 방법에 대해서 알아보겠습니다. 이미지 Asset을 가져오기 위해선 PHFetchResult 객체를 통해 가져올 수 있지만, PHFetchResult 객체를 사용하기 위해선 PHAsset과 PHAssetCollection에 대해 알고 있어야 합니다. 하지만, 두 객체는 PHObject를 상속받기 때문에 PHObject 먼저 알아보겠습니다. PHObject PHObject는 공식문서에 따르면, 직접 인스턴스를 만들거나 사용하면 안됩니다. 하위 클레스인 PHAsset, PHAssetCollec..
[iOS]PhotoKit 알아보기(1)
·
iOS
만약 우리가 만든 App에 사진첩의 사진을 가져오려고 한다면, PhotoKit을 사용해야 할 것입니다. 이번 주제에서는 위 PhotoKit을 이용하여 사진첩에 있는 사진을 가져와 나만의 Custom 사진첩을 만들어 보겠습니다. 하지만, 만들어 보기 전에 PhotoKit과 사진첩을 만들기 위한 객체 및 메서드에 대해서 먼저 알아보겠습니다. PhotoKit PhotoKit 공식문서에서는 PhotoKit을 Framework가 아닌 Technology라고 기재해 두었네요. PhotoKit은 사진 앱에서 관리하는 사진 및 비디오 자산에 대한 직접 액세스도 제공합니다. PhotoKit을 사용하여 우리의 앱에 이미지 또는 동영상을 표시 및 재생을 위해 Asset을 가져오거나, 캐시까지도 가능합니다. 또한, 위 사진과..
[DFS] 백준 1707번: 이분 그래프(Swift)
·
코테
https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 난이도: 골드 4 사용언어: Swift 카테코리: DFS 풀이과정 1707번 문제의 주제는 이분 그래프이다. 이분 그래프란, 위 그림과 같이 각 집합의 정점을 두 분류로 나눌 수 있는 그래프가 이분 그래프이다. 1번 예제 같은 경우, 위와 같이 표현할 수 있기 때문에, 이분 그래프라고 할 수 있다. 하지만, 2번 예제 같은 경우 2와 4가 한 분류로 묶이기 때문에 이분 그래프가 될 수 없다. 위 ..