IOS
-
[WWDC19] Building Custom Views with SwiftUI Session, SwiftUI Layout 크기 메커니즘 알아보기IOS/WWDC24 2024. 9. 21. 09:04
[Introduce]이번 글은 WWDC19 Building Custom View with SwiftUI 영상에 소개된 SwiftUI View 메커니즘에 소개하려 합니다.SwiftUI를 활용한 iOS, iPadOS 등 컴포넌트 사용법을 습득하기에 급급했었습니다. Apple 생태계 개발에 입문하시는 분들에게 이번 영상을 계기로 좀 더 SwiftUI의 메커니즘을 이해하는 데 도움이 되는 마음으로 글을 작성하게 되었습니다. struct ContentView: View { var body: some View { Text("Hello World") }}간단한 코드이지만, 실제 어떤 계층 구조를 가지고 있는지 생각해 보신 적 있으신가요?SwiftUI에선 위 코드를 어떤 구조로 가지고 있을까요?SwiftUI도 UIk..
-
[WWDC24] Translation API_한번에 여러 컴포넌트 번역하기IOS/WWDC24 2024. 9. 14. 11:48
WWDC Translation API 소개 영상에 나온 기능 시연입니다. 한 번에 상호작용으로 여러 번역을 제공하는 시연 영상입니다. 이 기능을 구현하는 방법은 어떻게 하면 될까요? 1. TranslationSession classTranslationSession을 활용하면 한 번에 여러 텍스트를 번역해서 출력 또한 할 수 있다고 소개되어 있습니다. requests property를 보면, TranslationSeesion.Request 배열이 존재하고 이걸 파라미터로 전달하게 되는 형태인 거 같네요.SwiftUI에선. translationTask Modifier를 통해 Translation class 인스턴스를 생성하지 않고 사용할 수 있습니다.위 예시는 초기 Text가 표출 될 때 클로저가 한 번만 ..
-
[WWDC24] Translation API_소개IOS/WWDC24 2024. 9. 8. 23:15
Translation API는 iOS, iPadOS, MacOS에 지원되는 번역 API입니다.이미 Apple 제품 사파리에서 텍스트 드래그 후 번역 기능을 이용해 보신 분들은 쉽게 어떤 기능인지 이해할 수 있을 거 같습니다.이러한 번역기능을 개인 앱에서 이용할 수 있게 도와주는 API라 이해하시면 될거 같습니다. 2024 WWDC Machine Translation 팀 엔지니어가 한 말이 있습니다. "Apple은 언어의 장벽을 없애려고 노력한다." 이 말에 맞게 Translation API를 통해 개인 앱에 적용함으로써 언어의 장벽없이 앱을 사용할 수 있는 시도를 할 수 있을 거 같은 발판이 되는 API라 생각합니다. 본론으로 들어가기전 총 3편(소개 -> 심화 -> 팁 순서)에 나누어서 글이 작성됩니..
-
POP에 대해서IOS 2024. 7. 23. 00:40
안녕하세요, 이번 글은 POP에 대한 정리와 "OOP와 차이점은?"에서부터 시작된 궁금증을 해소함과 더불어 Swift 입문자 분들에게 조금이나마 도움이 되는 마음으로 OOP와 POP에 대해 글을 쓰려합니다. POP를 시작하기 앞서, 오랫동안 프로그래밍 기법으로 자리 잡은 Object Oriented Programing이 존재했습니다.객체지향 패러다임으로 C++, C#, Java 등 많은 언어들이 존재했고 해당 언어를 OOP SOLID원칙에 따른 프로그래밍 장점과 차이점이 존재했던 거 같습니다.OOP패러다임 다음 POP는 OOP에서의 단점들을 보안한 프로그래밍 기법이라 생각되는데요, 그 이유에 대한 내용으로 내용을 작성하려 합니다. [Swift Protocol]'기능적으로 비슷한 성격을 띠는 동작이나 속성..
-
Combine - MapErrorIOS/Combine 2024. 6. 22. 17:55
오늘 소개할 에러 핸들링에 필요한 연산자로 .mapError Operator를 소개하겠습니다. 시작하기에 앞서, tryMap과 MapError로 에러 핸들링이 가능할 거 같은데요! 각 operator의 차이점이 있습니다 ㅎㅎ 먼저 map과 tryMap의 차이점을 다시 정립하고, mapError를 왜 사용하게 되는지 설명드리겠습니다. map vs tryMapMap은 지난 글에 이어 Publisher가 발행하는 Value를 특정한 형태로 다시 재발행하는 메커니즘, tryMap Operator의 경우 Error를 Throw 할 수 있는 Operator로 에러 발생 시 Subscriber에게 Completion 이벤트로 에러를 전달하게 됩니다.더보기다시보는 코드예제// Map Operator 코드예제[123, ..
-
Combine - Future PublisherIOS/Combine 2024. 6. 1. 18:23
메커니즘Just와 같이 구독자에게 한 번 값을 방출 후 Completion 이벤트를 방출하는 Publisher로 Just와 다른 점은 Asynchronously 하게 처리된다는 점입니다.구독자가 없어도 Future Publisher가 실행되며 나중에 해당 Future를 구독했을 때 이전에 실행된 값을 전달하는 메커니즘을 가지고 있습니다. 예제코드func futureIncrement(integer: Int, afterDelay delay: TimeInterval) -> Future { Future { promise in print("Future Start!!!") DispatchQueue.global().asyncAfter(deadline: .now() + de..
-
Combine Operators 2(Replace)IOS/Combine 2024. 4. 21. 19:03
안녕하세요 이번 글에선 Upstream 방출 값을 Replace하는 replaceNil, replaceEmpty를 알아보도록 하겠습니다. replaceNil(with:) - 옵셔널 값을 핸들링 할 때 사용되며 nil일 때 with파라미터의 지정된 값으로 변경할 수 있는 Operator입니다. ["A", nil, "C"].publisher .replaceNil(with: "-") .sink { print($0) } optional로 감싸져 있는 것을 unwrapping 하는 방법은 .eraseToAnyPublisher 및 with 파라미터에 as String으로 캐스팅 하는 방법이 있습니다. ["A", nil, "C"].publisher .eraseToAnyPublisher() .replaceNil(wit..
-
Combine Operators 1 (transforming)IOS/Combine 2024. 4. 13. 15:23
Operator Combine을 영어로 비교하자면 Operator는 단어 같은 존재입니다. Combine사용 시 필수적으로 사용되며, 다양한 연산을 맡아 처리하고 다시 방출하는 메커니즘을 가지고 있습니다. 이런 Operator를 가지고 방출된 값을 Collect해 배열로 합쳐 subscriber에게 전달하거나, 예외처리 같은 작업도 가능합니다. 따라서 Operators를 Upstream Publisher를 재가공한 다른 형태의 Publisher라 이해하면 좋을 거 같습니다. Combine에서 여러가지 Operator가 존재합니다. 1. collect() Publisher가 방출하는 값들을 Single Array로 묶어서 다시 방출하는 연산자입니다. Upstream Publisher가 종료될 때까지 기다리..