본문 바로가기

전체 글

(39)
Concurrency (4) Custom Asynchronous Sequences With AsyncStream 이전글 - Concurrency(3) AsnycSequence & Intermediate Task Modern Concurrency in Swift 를 읽고 간단 정리 Digging into AsyncSequence, AsyncInteratorProtocol and AsyncStreamAsyncSequenceAsyncSeqeunce@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)@rethrows public protocol AsyncSequence {    /// The type of asynchronous iterator that produces elements of this    /// asynchronous sequence.    assoc..
SwiftUI - TabView 내부 컨텐츠의 OffsetX 구하기 SwiftUI TabView를 사용하는 뷰에서 내부 컨텐츠들의 개별 offsetX를 탭뷰 기준으로 구하고 싶다. 원하는 것은 탭뷰의 좌측 상단으로 부터 컨텐츠가 얼마나 이동했는가 이다. GeometryReader 추가 전 예제 코드좌우 패딩 20을 갖는 간단한 탭뷰 코드struct TabViewCoordinateSpaceExample: View { @State private var selection: Int = 0 private let tabs: [Color] = [ .red.opacity(0.2), .blue.opacity(0.2), .green.opacity(0.2), .brown.opacity(0.2), .yellow.opacity(0.2), .cyan.opacity(0.2) ] var body: ..
SwiftUI - GeometryReader, CoordinateSpace GeometryReaderhttps://developer.apple.com/documentation/swiftui/geometryreader GeometryReader | Apple Developer DocumentationA container view that defines its content as a function of its own size and coordinate space.developer.apple.com GeometryReader는 자신의 크기와 좌표 공간을 함수로 사용여 컨텐츠를 정의하는 컨테이너 뷰다. 이를 통해 자신이 배치된 부모 뷰의 크기와 좌표 공간에 대한 정보를 얻을 수 있고,이 정보를 기반으로 레이아웃을 동적으로 정의할 수 있다. import SwiftUIstruct Con..
Tuist - 기존 프로젝트에 Tuist 도입 배경 및 효과 기존 프로젝트에 Tuist 4를 도입했던 과정을 기록합니다. Tuist3에서 Tuist4로 넘어가는 과정에 마이그레이션을 진행하느라 자료도 충분치 않았고, 여러 기본 개념들에 빈틈이 많았던 상황이라 그 과정에서 개인적으로도 여러모로 많이 학습했습니다. 현재는 Tuist로의 전환을 마치고 µFEATURES 도입을 위해 (또는 현재 프로젝트에 fit한 구조를 찾는 과정) 공통 모듈들을 분리하는 작업을 진행 중에 있는데요. Tuist를 도입한 배경, 마이그레이션 과정, 모듈들을 분리하면서 만났던 이슈들 그리고 모듈화 진행 과정까지 하나씩 정리해보려 합니다. 이번 글에서는 Tuist를 도입한 배경과 도입 후 느낀 장점들에 대해 소개합니다. 상황Tuist의 도입을 처음 고려하게 된 이유는 프로젝트 모듈화에 대한 ..
자료구조 - 스택, 큐, 덱 C언어로 쉽게 풀어쓴 자료구조를 읽으며 정리스택정의후입선출(LIFO)구조로 모든 원소들의 삽입, 삭제가 리스트의 한쪽 끝에서만 수행되는 선형구조.구현struct Stack { private var _stack: [Element] = [] var count: Int { self._stack.count } var isEmpty: Bool { self._stack.isEmpty } mutating func push(_ element: Element) { self._stack.append(element) } mutating func pop() -> Element? { return self.isEmpty ? nil : self...
Concurrency (3) AsyncSequence & Intermediate Task 이전글 - Concurrency(2) Getting started with async/await Modern Concurrency in Swift 를 읽고 간단 정리Getting to Know AsyncSequence AsyncSequence는 비동기적으로 Element를 생성할 수 있는 시퀀스를 나타내는 프로토콜- Swift Sequence와 동일- 일반적인 Sequence에서는 다음 Element를 즉시 사용 가능- AsyncSequence에서는 await 키워드를 사용하여 다음 요소가 준비될 때 까지 기다려야 한다. for문for try await item in asyncSequence { // Next item for asyncSequence} while문var iterator = async..
Concurrency (2) Getting started With async/await 이전글 - Concurrency(1) Why Modern Concurrency? Modern Concurrency in Swift 를 읽고 간단 정리 Pre-async/await Asynchronyfunc fetchStatus(completion: @escaping (ServerStatus) -> Void) { URLSession.shared.dataTask( with: URL(string: "https://amazingserver.com/status")! ) { data, response, error in // Decoding, error handling etc completion(ServerStatus(data)) }.resume()}fetchSt..
자료 구조 - 배열, 연결 리스트 C언어로 쉽게 풀어쓴 자료구조를 읽으며 정리배열인덱스와 요소 쌍의 집합메모리의 연속된 위치에 구현된다.크기 5인 배열 A가 있을 때 메모리 주소는 아래와 같다.ElementMemory AddressA[0]base * 1 * sizeof(type of Element)A[1]base * 2 * sizeof(type of Element)A[2]base * 3 * sizeof(type of Element)A[3]base * 4 * sizeof(type of Element)A[4]base * 5 * sizeof(type of Element)  함수의 매개 변수로서의 배열C언어에서 함수의 매개 변수로 배열을 전달하는 것은, 배열의 포인터가 전달되는 것과 같다.Swift 역시 배열 자체가 아닌 배열의 참조가 전달된다..