전체 글
-
[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편(소개 -> 심화 -> 팁 순서)에 나누어서 글이 작성됩니..
-
Swift에서 힙, 우선순위 큐 사용하기 (100% 순수 구현을 곁들인)CS/자료구조 2024. 7. 30. 16:51
안녕하세요, 자료구조로 글쓰는 건 정말 오랜만입니다.Swift에서 우선순위 큐 코드를 코테에서나, 코딩 인터뷰때 사용한다면 어떻게 할까? 부터 시작해 이글을 쓰게 되었습니다.현재 제 주력언어는 Swift로, Heap과 관련된 서드파티 라이브러리 같은 게 있을거 같은데 코테에서나 인터뷰에선 해당 라이브러리를 쓰자니 곤란합니다. 물론 제한사항도 있을거구요. 다른 언어를 사용해도 되지만, 너무 단순한 대체법인 거 같습니다. 물론 사용해도 문제가 없고 다른 언어를 알고 있다면 상관 없겠지만요. 그래서 뭘 말하려고 하냐면 옛날에 큐 관련 자료를 정리 해놓고 구현해 놓았던 Heap과 우선순위 큐, 그리고 이를 사용할 수 있는 설명과 구현 코드를 제시하려 합니다. [Swift 우선순위 큐 구현코드]struct Glo..
-
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..