이번에 새롭게 시작한 SwiftUI 프로젝트에 Coordinator Pattern을 적용해보았다. UIKit은 구현방식이 어느정도 비슷한 느낌을 받았는데 SwiftUI 방식은 정형화된 방식이 없는것처럼 느껴졌다. 그중에 나름 이해가 잘되고 직관적으로 느껴지는 방법을 정해서 구현을 해보았다. 첫번째로 고민했던점은 앱에서 Coordinator를 어떠한 기준으로 나누냐를 고민하게 되었다. UIKit에서는 화면한개당 하나의 Coordinator가 존재한다. 하지만 예전에 적용했던 SwiftUI에서 방식은 한개의 코디네이터로 화면을 이동해도 겉으로 나타나는 문제는 없었다.내가 이해한 UIkit에서의 Coordinator는 flow마다 Coordinator를 나누는 느낌으로 받아들였다. 예를들어 a, b, c 라는..
속성 감시자란 변수의 속성의 변화를 감시할 수 있는 메서드 이다. 저장 속성에 대하여 willSet, didSet 메서드를 설정할 수 있는데 해당 변수의 값이 변경되기 전, 후 에 대한 감시가 가능한 메서드를 제공한다. var animal: String = "dog" { willSet(value) { print("값이 \(animal) 에서 \(value)로 변경될 예정") // 값이 dog 에서 cat로 변경될 예정 } } animal = "cat" animal 이라는 변수는 저장 속성이며 "dog" 라는 문자열을 값으로 가지고 있다 해당 변수의 값을 밑에서 cat으로 변경하면 willSet 메서드가 호출되면서 willSet 메서드 내부의 메세지가 출력된다. var animal: String = "do..
인스타그램을 보면 피드 화면에는 모든 피드가 랜덤으로 나타나고 유저의 프로필을 들어가면 해당 유저가 작성한 피드만 나타난다 앱을 만들다 보면 이러한 경우가 종종 발생한다 그럴때 어떻게 로직을 구성해야 할지 잘 모르겠고 이 방식이 맞나 고민이 됬었다. 탐색화면으로 가면 모든 게시물을 보여준다 이러한 경우에는 모든 게시물을 가져오도록 기능을 구현하면 된다. 하지만 특정 유저의 게시물을 갔을때는 유저가 작성한 게시물만 나타도록 해야한다 가장 간단한 방법은 현재 SearchViewModel 에서 fetchPosts 메서드의 인자로 유저의 id를 받고 해당 유저의 id가 존재하면 특정 유저의 id를 가져오고 id가 존재하지 않는다면 모든 게시물을 가져오는 방식을 생각했다. 해당 방식을 사용할 수 있지만 PostG..
SwiftUI에서 UIViewRepresntable 프로토콜을 이용하여 SwiftUI에서 UIKit 뷰를 래핑하고 코디네이터를 구현하여 SwiftUI와 UIKit 이벤트를 브릿징 하는 방법을 알아보도록 하자! 애플 공식문서 에서는 UIViewRepresentable을 SwiftUI에 UIKit 뷰 계층구조에 통합하는데 사용되는 래퍼클러스라고 소개하고 있다. SwiftUI가 빠르게 업데이트 되고 편리성이 많은것은 사실이지만 사실 이번에 팀프로젝트를 진행하면서 가장크게 느낀것은 UIKit은 이미 너무나도 많은 기능을 가지고 있고 실제로 모든것을 대체하기 까지는 아직은 시간이 걸릴것 같다는것을 몸으로 체감하게 되었다. 이번에 팀프로젝트에서 사용한 맵뷰와 같은 외부라이브러리 뿐만이 아니라 UI를 빌드할때도 종..
https://www.acmicpc.net/problem/1068 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 문제풀이 트리에서 특정 노드를 제거했을떄 남은 리프노드의 개수를 구하는 문제이다 트리의 개수를 구하는 방법은 인접리스트를 이용하여 트리를 탐색해주면 리프노드의 개수를 구할 수 있다. 입력으로 인접리스트에 노드의 인덱스를 넣어준다 배열과 vector를 이용하면 인접리스트를 쉽게 구현할 수 있다. adj[0] = {1, 2} adj[1] = {3, 4} 이렇게 부모노드와 자식노드의 리스트를 만들..
https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net 문제풀이 지훈이가 탈출할 수 있는 가장 빠른시간을 구해야한다 문제를 보자마자 bfs로 접근이 필요한 것을 확신할 수 있다 단 4방향으로 퍼지는 불을 생각해야 한다 4방향으로 퍼지는 불 + 불은 여러개가 있을 수 있음에서 결국 문제를 해결하지 못했다. 첫번쨰로 지훈이가 불을 피해서 도망갈 수 있는경우와 그렇지 못한 경우를 생각해야 한다 불이 퍼지는 최단거리와 지훈이가 탈출하는 최단거..