본문 바로가기

분류 전체보기34

Task Group 문제점 Swift Concurrency를 사용하다가 보면 이런 문제를 마주할 수 있다. API가 많아졌을 때, 이를 한번에 호출하기가 쉽지 않다. 예를 들어 Home View를 구성하는데 세개의 View Component가 있고, 이 Component안의 데이터를 채우기 위해서는 세개의 API를 call해야한다고 가정을 해보자. 이 때 무지성으로 task안에 await를 하나씩 하나씩 넣으면 매우 비효율적인 모습이 되게된다. Why? Task안의 코드들은 마치 동기 코드인것 마냥 진행이된다. 따라서, getAData가 끝나지 않는다면 getCData는 실행되지 않는다. A, B, C의 데이터는 각각이 독립적이어서 어떤 것이 먼저 실행되든 상관이 없음에도 불구하고, getAData()가 끝나지 않으면 그.. 2023. 1. 14.
Swift Concurrency 알아보기 Swift Programming Language를 해석하여 Swift Concurrency에 대해서 알아보자. 자세한 내용은 위 링크를 참고하시면 좋겠다. Swift Concurrency 우리는 UI업데이트나 무거운 작업을 하기 위해서 비동기 / 병렬 실행 코드를 작성하곤 한다. 하지만.. 이런 병렬 또는 비동기 코드는 많아지면 질수록 관리에 많은 어려움을 겪는다. 또한, 느리거나 버그가 많은 코드에 동시성을 추가한다고 해서 그것이 빨라지거나 정확해진다는 보장은 없을 뿐더러 최악의 경우엔 디버깅만 어려워 질 수 있다. 이를 어떻게 Swift에서는 해결하려 했는지 확인해 보자. Without Swift Concurrency Swift Concurrency 언어 지원을 사용하지 않고 비동기 코드를 작성해보.. 2023. 1. 8.
Building Custom View with SwiftUI(WWDC19) - 2 지난 편에 이어서 SwiftUI의 Layout을 더 알아보자. 지난편에서 SwiftUI의 기본적인 Layout을 보았다면, 이번에는 좀 더 복잡한 View를 살펴본다. 들어가기 앞서.. -복습 UIKit과는 다르게 SwiftUI는 View자체의 Size로 layout을 설정한다. 우리가 익히 알던 Constraint가 없는 것이다. 따라서... Frame은 더이상 제약조건(Constraint)이 아니라 하나의 View로 인식해야한다. Child들에게 사이즈를 제안을 할 수 있지만 결국 Child가 자신의 크기를 선택한다. 물론, 부모보다 Child가 더 큰 사이즈를 가지게 되면 짤려 보이겠지만.. 부모가 child의 사이즈를 결정할 수 없다는 게 포인트! SwiftUI로 어떻게 구현할 수 있을까? Sta.. 2022. 11. 12.
Building Custom View with SwiftUI(WWDC19) - 1 SwiftUI는 UIKit에 비해 상당히 편하게 View를 만들어준다. 하지만, 조금만 Custom하려고 하면 상당히 애를 먹곤 했었는데, WWDC의 내용을 보면서 조금씩 기초를 이해 해보자. 기본 레이아웃 규칙 SwiftUI의 Layout에는 다음과 같은 규칙이 기본적으로 있다. 간단하게 Hello World를 가지고 있는 TextView를 보여준다고 해보자. 예시의 View Hierarchy는 위와 같을 것이다. 하지만 ContentView는 중립 상태이기 때문에 항상 body의 크기를 따라간다. 따라서, Layout의 관점에서 볼때에는.. Root View와 Text의 계층이 있다고 생각 할 수 있다. 여기서 LayoutSystem은 세 가지 단계를 거친다. 1. Root View는 적당한 사이즈를.. 2022. 11. 12.