iOS
[Swift] HOF(Higher Order Function) (1)
Swift 기본 고차함수(HOF; Higher Order Function) 에 대해알아보고 간단히 구현해보자. 고차함수란, 함수를 인자로 전달받거나 함수를 결과로 반환하는 함수를 의미한다. 보통 Swift에서 고차함수라고 한다면, forEach, map, filter, reduce처럼 Stream Data을 다루는 이야기가 많다. 1편에서는 위의 4가지 고차함수가 뭔지 알아보고, 한 가지를 직접 구현해볼 예정이다! 2편에는 contains, min, max도 사실 고차함수의 형태였다는 사실과 flatMap, compactMap, allSatisfy, partition 에 대해 알아보자. forEach func forEach(_ body: (Self.Element) throws -> Void) rethro..
![[iOS] Swift Static Framework 만들기(Universal) - 1. 삽질 구간](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzoISc%2FbtrHohAuJvW%2FfZZYVBWNDTvQku3DTq9og0%2Fimg.png)
[iOS] Swift Static Framework 만들기(Universal) - 1. 삽질 구간
[iOS] Swift Static Library 만들기(Device, Simulator) 최근에 Memoji Collector의 코드를 Git에 올리면서 두 가지 애로사항이 생겼다. - 일부 파일을 숨기고 싶다. - 하지만 다른 사람들이 내 레포의 fork나 clone을 통해 빌드가 가능했으면 좋겠다. 그러던 중 littlemoom.tistory.com 지난번에 Static Library를 만들면서 빌드할 Device가 바뀔 때마다(on device/simulator) library 파일 바꿔줘야하는 문제점을 발견했다. 몇주의 삽질 끝에 결국 framework를 사용하기로 했다! 당장 어떻게 만드는지가 궁금하다면 바로 다음글로 넘어가자! 제대로 시작하기 전에 삽질 구간에 대해 알아보자. 1. Static..
![[SwiftUI] @ViewBuilder](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F41K0P%2FbtrGfOxKyWb%2FmnTjgx0QbxbizFLYnXoGNK%2Fimg.png)
[SwiftUI] @ViewBuilder
Swift에서는 함수에서 함수를 리턴할 수도 있다. 또 UIKit을 사용하다보면, View, ViewController 등을 리턴할 수도 있다. 그럼 SwiftUI에서도 함수를 통해 View를 반환할 수 있을까? (View가 리턴 타입이 될 수 있을까?) 되는지 안 되는지 모르니까 일단 해보자! func notUseViewBuilder(isFirst: Bool) -> some View { if isFirst { return FirstView() } else { return SecondView() } } 무작정 코드를 작성하고 빌드를 했다. Opaque Type이긴한데 기본 타입을 알 수 없다고 한다. 검색해보니 이럴 때 ViewBuiler를 사용하면 된다고 한다. @ViewBuilder func useV..
![[SwiftUI] ViewModifier](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FditMTN%2FbtrGe24BLtl%2FCxKJHe5KMVqVEA98Nyc7F0%2Fimg.png)
[SwiftUI] ViewModifier
Apple Developer Documentation developer.apple.com SwiftUI에서는 주로 Modifier로 View의 속성을 설정한다. Text("ViewModifier") .foregroundColor(.blue) // 파란색 적용 .bold() // 굵게 .frame(width: 30, height: 150) // 너비 30, 높이 150 .padding() // padding 주기 우리가 같은 로직을 수행하는 코드를 함수로 만드는 것처럼 매번 사용되는 Modifier도 따로 만들어 놓을 수가 있다. ex) 목표하고자 하는 코드 Text("Custom ViewModifier") .customModifier(isBold: false) ViewModifier 정의 struct C..
![[Swift] await, async](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLOjjD%2FbtrF37zmNY4%2FTHjGAH6KEkjGiKmYT9aTFk%2Fimg.png)
[Swift] await, async
동시성 프로그래밍 키워드인 await와 async를 SwiftUI에서 사용하는 법에 대해 알아보려고 한다. await와 async 키워드를 사용하는 코드를 먼저 작성해보자. 아래와 같은 싱글톤 NetworkManager를 만들어보자 class NetworkManager { let baseURL = "{URL}" static let shared: NetworkManager = NetworkManager() // async 한다고 꼭 throws/try를 쓸 필요는 없다. func requestAsync() async -> [Step] { guard let url = URL(string: self.baseURL) else { return [] } do { let urlRequest = URLRequest(u..