반응형 Apple/Apple_Swift24 Swift Package Manager를 이용한 생성 및 Package추가 아래는 Swift Package Manager를 사용해서 생성부터 추가까지 링크를 정리 했다. Swift Package Manager(SPM)를 이용해서 라이브러리 만들기 Step By Step 출처: https://leviblog.tistory.com/34 Swift Package Manager(SPM)를 이용한 라이브러리 사용 방법 출처: https://leviblog.tistory.com/33 2024. 3. 15. Swift Package Manager(SPM)를 이용해서 라이브러리 만들기 Step By Step Swift Package Manager를 이용해서 내가 만든 소스코드를 라이브러리 형태로 배포하는 과정을 설명하려고 한다. 여러 유명 라이브러리 (Alamofire, Snapkit, RxSwift, Kingfisher, SDWebImage..)들도 SPM를 이용해서 배포를 하고 있다. 이 글에서는 Xcode15.2를 기준으로 작성 되었다. 1. Launchpad 선택 2. Xcode 실행 1. Xcode가 실행되면 모니터 왼쪽 최상단 File 메뉴를 선택 2. New 메뉴 선택 3. Package 메뉴 선택 1. Multiplatform 메뉴 선택 2. Library 선택 3. Next 선택 1. 패키지 이름을 작성 2. Source Control 생성 유무. Github에 해당 라이브러리를 올려서 배포.. 2024. 3. 15. Swift Package Manager(SPM)를 이용한 라이브러리 사용 방법 Swift Package Manager(SPM)는 Swift 언어를 위한 패키지 관리 도구다. 여기서 패키지 관리자란, 프로젝트에서 사용하는 외부 라이브러리나 프레임워크를 편리하게 관리할 수 있게 도와주는 도구를 말한다. 필요한 라이브러리를 쉽게 찾고, 추가하며, 업데이트할 수 있다. CocoaPods, Carthage와 같은 기존 의존성 관리 도구가 있지만, SPM은 편의성과 빌드 속도의 이점을 가져 갈 수 있다. 또한 애플에서 직접 제공하는 1st party 의존성 도구이므로 사용성이 높아지고 있다. Swift Package Manager는 Swift 언어에 내장된 도구로, Xcode와 함께 자연스럽게 통합되어 사용할 수 있다. 참고로, 다른 언어의 패키지 관리 도구로는 JavaScript의 npm,.. 2024. 3. 14. swift5.5 스레드 동시성 문제 및 해결 방안 (async/await, Actor) 동시성 문제는 여러 스레드 또는 동시에 실행되는 코드가 공유된 데이터에 액세스할 때 발생할 수 있습니다. 동시성 문제의 대표적인 예시는 "계좌 이체" 문제입니다. 계좌 이체를 예로 들어 볼 수 있습니다. 두 개의 계좌 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:.. 2023. 3. 21. Swift 5.1 Static and class subscripts (SE-0254) Swift 5.1에서는 static 및 class subscript가 도입되어 클래스 및 구조체에서 서브스크립트(Subscript)를 정의할 때 유용하게 사용될 수 있습니다. 서브스크립트는 인덱스를 사용하여 컬렉션, 리스트, 배열 등의 요소에 액세스하는 기능입니다. 일반적으로 서브스크립트는 인스턴스 레벨에서 정의됩니다. 하지만 Swift 5.1에서는 static 및 class 서브스크립트를 정의할 수 있게 되었습니다. Static subscript static subscript는 클래스나 구조체의 타입 자체에서 사용할 수 있는 서브스크립트입니다. 즉, 인스턴스 없이 타입 자체에서 호출할 수 있습니다. static subscript는 static 키워드를 사용하여 정의합니다. struct TimesTabl.. 2023. 3. 17. Swift5.1 불투명 타입 (Opaque type) some Type SE-0244 안녕하세요~! 오늘은 Swift5.1에서 소개된 불투명 타입 Opaque type에 대해서 소개해 드리려고 합니다~! 명확한 반환 타입을 외부에 제공하는 대신, Opaque 반환(return) 타입을 가진 함수, 메서드는 자신의 반환타입 정보를 외부에 숨길 수 있습니다. Return 타입을 숨기는 것은 모듈로 호출되는 코드와 모듈 사이에서 유용하게 사용할 수 있습니다. 제네릭(구현부 추상화), 호출하는 곳에서는 구체적인 타입(예 : )을 아는 상태에서 사용했다면, Opaque type은 반대로 구현부는 구체적인 타입을 알고 있지만, 호출하는 곳에서는 특정 프로토콜만 알 수 있습니다. - Generic - 구현부 - 추상화하여 작성 호출부 - 구체적인 타입 지정 (타입을 알 수 있음) - Opaque Ty.. 2023. 1. 20. Swift5.1 구조체 멤버별 이니셜라이저(Memberwise Initializer)의 기본값 합성 SE-0242 안녕하세요~! 오늘은 Swift5.1에서 새롭게 변경된 사항들을 정리해보려고 하는데요 첫 번째로 멤버셜 초기화(memberwise initializer)시 기본값 합성에 대해서 알아보려고 합니다. 어떻게 달라졌는데 함께 알아보시죠~! 기본적인 구조체 강아지를 만들었습니다. struct Dog { var age: Int var name: String } 컴파일러에서는 아래와 같이 초기화를 합성합니다. init(age: Int, name: String) 그런데 만약 모든 강아지의 나이에 0으로 초기값을 갖는다고 가정 하고 인스턴스를 생성 했습니다. 하지만 인스턴스 생성시 Swift 컴파일러가 초기 값이 있는 속성에 대한 기본값을 생성할 수 없기 때문에 에러가 발생합니다. struct Dog { var age.. 2023. 1. 16. Swift5.0 SE-0225 배수 구하기 isMultiple(of:) 안녕하세요~! 오늘은 isMultiple(of:)에 대해서 소개해 드리겠습니다. isMultiple(of:)는 배수인지 판단하는 메서드입니다. 여기서 배수는 어떤 정수와 다른 정수를 곱했을 때 나오는 수입니다. 예를 들어 6 = 2 * 3이므로 6은 3의 배수입니다. 아래 코드 처럼 이전에는 % 연산자를 사용해서 배수를 판단하는 코드를 작성했었죠 그렇다면 isMultiple(of:)와 어떤 문제를 해결 할 수 있길래 애플에서 공식적으로 제공하고 있을까요? let number = 6 if number % 3 == 0 { print("6은 3의배수") } 첫 번째로, 0으로 나누는 상황을 볼 수 있는데요. number % 0 == 0 은 무조건 참 입니다. number.isMultiple(of: 0)은 nu.. 2023. 1. 11. 이전 1 2 3 다음 반응형