아래 다룰 주제 1. 디렉토리 구조와 Package.swift 안의 1:1 매칭 구조 2. Package class안에 들어가는 파라미터 1. 디렉토리 구조와 Package.swift 안의 1:1 매칭 구조 패키지 이름과 1:1 매칭 해당 라이브러리의 구현 타겟 설정 테스트 타겟은 "ExampleTarget"를 테스트하기 위해 의존성을 갖고 있다. 테스트 타겟 설정 2. Package class안에 들어가는 파라미터 name: Swift 패키지의 이름 products: 패키지가 제공하는 제품들의 목록 .library -> name: 라이브러리 이름 .library -> targets: 라이브러리 제품에 묶여 있는 타겟들. targets: 코드 모듈, 테스트 정의 .target -> name: 타겟 이름 ..
개발 중 반복적으로 사용되는 코드는 유지보수를 어렵게 하고, 새 기능 추가 시 모든 관련 부분을 수정해야 하는 번거로움이 있다. 이러한 반복적인 코드를 '보일러플레이트(Boilerplate)'라 부르며, 개발을 간편하게 하지만 코드 양과 복잡성을 증가시킬 수 있다. Swift5.9에서는 매크로를 통해 위 문제를 효과적으로 해결할 수 있는 방법을 제시했다. Swift 매크로를 사용하면 컴파일 시간에 반복적인 코드를 생성할 수 있어, 앱의 코드베이스를 더 표현적이고 읽기 쉽게 만들 수 있다. 또한 컴파일러를 수정하지 않고 Swift 패키지에 배포할 수 있다. 이 글에서 다룰 주제를 정리 했다. (Xcode15.2 기준) 0. 예시 소개 1. 매크로 만드는 방법과 실행 2. 매크로 동작 방식 3. 매크로 테..
아래는 Swift Package Manager를 사용해서 생성부터 추가까지 링크를 정리 했다. Swift Package Manager(SPM)를 이용해서 라이브러리 만들기 Step By Step 출처: https://leviblog.tistory.com/34 Swift Package Manager(SPM)를 이용한 라이브러리 사용 방법 출처: https://leviblog.tistory.com/33
Swift Package Manager(SPM)는 Swift 언어를 위한 패키지 관리 도구다. 여기서 패키지 관리자란, 프로젝트에서 사용하는 외부 라이브러리나 프레임워크를 편리하게 관리할 수 있게 도와주는 도구를 말한다. 필요한 라이브러리를 쉽게 찾고, 추가하며, 업데이트할 수 있다. CocoaPods, Carthage와 같은 기존 의존성 관리 도구가 있지만, SPM은 편의성과 빌드 속도의 이점을 가져 갈 수 있다. 또한 애플에서 직접 제공하는 1st party 의존성 도구이므로 사용성이 높아지고 있다. Swift Package Manager는 Swift 언어에 내장된 도구로, Xcode와 함께 자연스럽게 통합되어 사용할 수 있다. 참고로, 다른 언어의 패키지 관리 도구로는 JavaScript의 npm,..
동시성 문제는 여러 스레드 또는 동시에 실행되는 코드가 공유된 데이터에 액세스할 때 발생할 수 있습니다. 동시성 문제의 대표적인 예시는 "계좌 이체" 문제입니다. 계좌 이체를 예로 들어 볼 수 있습니다. 두 개의 계좌 A와 B가 있고, A 계좌에서 B 계좌로 일정 금액을 이체하는 상황을 가정해 보겠습니다.class BankAccount { private(set) var balance: Int init(balance: Int) { self.balance = balance } func deposit(_ amount: Int) { balance += amount } func withdraw(_ amount: Int) { balance -= amount } } func transfer(from accountA:..
Swift 5.1에서는 static 및 class subscript가 도입되어 클래스 및 구조체에서 서브스크립트(Subscript)를 정의할 때 유용하게 사용될 수 있습니다. 서브스크립트는 인덱스를 사용하여 컬렉션, 리스트, 배열 등의 요소에 액세스하는 기능입니다. 일반적으로 서브스크립트는 인스턴스 레벨에서 정의됩니다. 하지만 Swift 5.1에서는 static 및 class 서브스크립트를 정의할 수 있게 되었습니다. Static subscript static subscript는 클래스나 구조체의 타입 자체에서 사용할 수 있는 서브스크립트입니다. 즉, 인스턴스 없이 타입 자체에서 호출할 수 있습니다. static subscript는 static 키워드를 사용하여 정의합니다. struct TimesTabl..
안녕하세요~! 오늘은 Swift5.1에서 소개된 불투명 타입 Opaque type에 대해서 소개해 드리려고 합니다~! 명확한 반환 타입을 외부에 제공하는 대신, Opaque 반환(return) 타입을 가진 함수, 메서드는 자신의 반환타입 정보를 외부에 숨길 수 있습니다. Return 타입을 숨기는 것은 모듈로 호출되는 코드와 모듈 사이에서 유용하게 사용할 수 있습니다. 제네릭(구현부 추상화), 호출하는 곳에서는 구체적인 타입(예 : )을 아는 상태에서 사용했다면, Opaque type은 반대로 구현부는 구체적인 타입을 알고 있지만, 호출하는 곳에서는 특정 프로토콜만 알 수 있습니다. - Generic - 구현부 - 추상화하여 작성 호출부 - 구체적인 타입 지정 (타입을 알 수 있음) - Opaque Ty..