swift

    Tuist 없이 모듈 만들기 with DemoApp

    Tuist 없이 모듈 만들기 with DemoApp

    모듈화는 Tuist가 있어야만 할 수 있을까요? 그렇지 않습니다. Tuist나 XCodeGen 과 같은 모듈화를 도와주는 도구들도 코드나 yml을 아래에서 설명할 형태로 바꿔주는 것이에요ㅎㅎ 그렇기 때문에 도구 없이도 모듈화를 할 수 있어야합니다. Tuist없이 모듈을 하나 만들어보겠습니다. 현재 모듈 구조는 아래와 같습니다. 여기서 TestFeature 라는 모듈을 하나 만들어 볼거에요.File - New - Project 를 눌러줍니다.그리고 Framework(Dynamic Framework)를 골라줍니다.모듈명을 설정하고Add to, Group을 xcworkspace 를 지정해 워크스페이스에 들어가도록 설정하고 create를 눌러 모듈을 생성합니다.짜잔 모듈이 생겼어요.이 헤더 파일을 objc와 브..

    Swift Concurrency - Sendable

    Swift Concurrency - Sendable

    Swift6부터 Sendable 관련 경고나 에러가 너무 많이 뜨더라구요.Concurrency도 모르고 Sendable도 모르는데..!그래서 Sendable 애플 공식문서와 swift docs를 읽고 감을 익혀보려고 합니다.먼저 애플 공식문서부터 읽어볼게요! 애플 공식문서 링크: https://developer.apple.com/documentation/swift/sendableSwift docs 링크: https://docs.swift.org/swift-book/documentation/the-swift-programming-language/concurrency/#Sendable-TypesSendable 이란?protocol Sendable 데이터 레이스 위험(a risk of data races) 없..

    Swift Concurrency - Task

    Swift Concurrency - Task

    Swift6가 나오면서 컴파일 단계에서 동시성 문제를 강하게 잡더라구요.그래서 더 이상 Swift Concurrency 공부를 미룰 수 없겠다 싶어 차근차근 학습해보려고 합니다.오늘은 Task에 대해서 공식문서와 함께 알아볼거에요. Task 공식 문서: https://developer.apple.com/documentation/swift/taskTask 란?비동기적인 작업의 단위(A unit of asyncchronous work) 입니다.@frozen struct Task where Success : Sendable, Failure : ErrorOverview 개요작업(Task)는 생성 직후에 바로 실행될 수 있으며, 명시적으로 시작하거나 예약할 필요가 없습니다.Tasks can start runnin..

    Swift 메모리 관점에서의 Image

    Swift 메모리 관점에서의 Image

    목차이미지이미지 처리 프로세스문제점이미지 리사이징다운 샘플링ImageI/ONSURL결과이미지가로 2048, 세로 1536 픽셀의 이미지가 있고 이 이미지 파일의 용량은 590KB입니다.하지만 이 이미지가 iOS 앱에서 보여지기 위해 메모리에 올라갈 땐 얼마나 사용될까요?무려 10MB 를 사용하게 됩니다..왜 그런지 알아볼게요이미지 처리 프로세스  이미지는 JPEG으로 압축되어있는 데이터 타입입니다.이 이미지를 렌더링하는 과정은 다음과 같습니다.Load데이터 타입의 이미지를 메모리에 load합니다.Decode메모리의 이미지를 GPU가 읽을 수 있는 형태로 디코딩 합니다.해당 과정에서 JPEG으로 압축된 파일을 압축 해제하며 10MB가 됩니다.Render디코딩된 이미지를 렌더링하여 우리가 볼 수 있게 됩니다..

    SwiftData 알아보기

    SwiftData 알아보기

    목차SwiftData란?SwiftData 구조SchemaModelContainerModelContextCRUDBindable이번 포스팅은 WWDC23에서 발표된 SwiftData 를 알아보려고 합니다.바로 알아봅시다!SwiftData란?SwiftData란 애플에서 제공하는 로컬 저장소 프레임워크입니다. iOS 앱을 만들때 로컬 저장소로 많이 사용하던 프레임워크로는 애플의 퍼스트파티 프레임워크인 Core Data, 서드파티 라이브러리로인 Realm 등이 있었습니다. 저는 Realm만 써왔었는데, Core Data 보다 속도가 2배 빠르고 사용법이 간단해 빠르게 적용하기 좋아 Core Data 대신 Realm을 채택했었습니다. SwiftData는 Realm 대신 채택할 이유가 생길까요? 한번 SwiftDat..

    [알고리즘] 구간 합, 누적 합(Prefix Sum)

    [알고리즘] 구간 합, 누적 합(Prefix Sum)

    목차 누적 합이란? 언제 사용할까? 예시 및 코드 누적 합이란? 누적 합이란 수열 An에 대해서 각 인덱스까지의 구간의 합을 구하는 것을 누적 합이라고 합니다. 예를 들어 [1, 2, 3, 4, 5] 라는 배열이 있을 때, 각 구간까지의 합을 구하는 배열인 [ 1, 3, 6, 10, 15] 을 구한다고 가정해보면 아래와 같이 2가지로 구할 수 있습니다. [ 첫번째 방법 ] 1 1+2 1+2+3 1+2+3+4 1+2+3+4+5 매번 현재 인덱스까지의 값을 반복하며 더해주기 [ 두번째 방법 ] 1 1+2 3+3 6+4 10+5 이전 인덱스까지의 누적합에 현재 값을 더해주기 어떤게 더 효율적일까요? 배열의 갯수인 n을 늘려 [1, 2, ..., 99999, 10000]로 비교해보겠습니다. [ 첫번째 방법 ] ..