본문 바로가기
반응형

swift29

Swift Package Manager(SPM)를 이용한 라이브러리 사용 방법 Swift Package Manager(SPM)는 Swift 언어를 위한 패키지 관리 도구다. 여기서 패키지 관리자란, 프로젝트에서 사용하는 외부 라이브러리나 프레임워크를 편리하게 관리할 수 있게 도와주는 도구를 말한다. 필요한 라이브러리를 쉽게 찾고, 추가하며, 업데이트할 수 있다. CocoaPods, Carthage와 같은 기존 의존성 관리 도구가 있지만, SPM은 편의성과 빌드 속도의 이점을 가져 갈 수 있다. 또한 애플에서 직접 제공하는 1st party 의존성 도구이므로 사용성이 높아지고 있다. Swift Package Manager는 Swift 언어에 내장된 도구로, Xcode와 함께 자연스럽게 통합되어 사용할 수 있다. 참고로, 다른 언어의 패키지 관리 도구로는 JavaScript의 npm,.. 2024. 3. 14.
현재 정착한 mvvm 아키택처 패턴 (for UIKit) MVVM (Model-View-ViewModel)은 UI 개발에 쓰이는 아키텍처 패턴이다. 이 패턴은 개발자가 비즈니스 로직과 사용자 인터페이스를 효율적으로 나눌 수 있게 만들어준다. 주로 세 부분으로 구성되어 있다. Model (모델): 앱의 데이터와 비즈니스 로직을 맡고 있다. 데이터 저장소, 모델, 서비스 등이 여기 포함되며, 데이터 처리 로직을 다룬다. View (뷰): 사용자가 보는 UI 부분이다. 뷰는 사용자의 앱 상호작용을 정의하고, MVVM에서는 뷰가 ViewModel을 통해 데이터를 보여주도록 설계되어 있다. ViewModel (뷰모델): 뷰와 모델 사이의 중간자 역할을 한다. 뷰모델은 뷰에 필요한 데이터와 명령을 제공하고, 뷰는 데이터 바인딩을 통해 모델의 상태 변경을 반영하거나.. 2024. 3. 11.
modalPresentationStyle .fullScreen과 .overFullScreen의 차이점 modalPresentationStyle의 두 가지 옵션 중 .fullScreen은 모달 뷰 컨트롤러가 전체 화면을 차지하며, 부모 뷰 컨트롤러가 완전히 사라집니다. 다시 말해, 모달 뷰 컨트롤러가 화면 전체를 차지하여 부모 뷰 컨트롤러의 콘텐츠가 보이지 않습니다. 반면에, .overFullScreen은 모달 뷰 컨트롤러가 전체 화면을 차지하지만, 부모 뷰 컨트롤러는 여전히 보이며, 일부 콘텐츠가 여전히 볼 수 있습니다. 즉, 모달 뷰 컨트롤러는 전체 화면을 차지하지만, 부모 뷰 컨트롤러의 일부 콘텐츠가 여전히 보이며 배경은 투명하게 처리됩니다. 따라서, .fullScreen은 모달 뷰 컨트롤러가 전체 화면을 차지하며, 부모 뷰 컨트롤러가 완전히 사라지는 반면에, .overFullScreen은 모달 뷰 .. 2023. 3. 20.
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.
reason: 'Don't know about flushed view iOS에서 addSubView 메서드를 호출 할 때 발생합니다. 뷰 계층 구조에서 뷰를 찾지 못했을 때 발생합니다. 오류가 발생하는 이유는 일반적으로 다음과 같은 경우입니다. 추가하려는 서브뷰가 메모리에서 해제되었거나, 이전에 다른 뷰에 추가되었을 경우, addSubView를 호출하여 이미 제거된 뷰를 추가하려고 시도하는 경우입니다. 추가하려는 뷰가 아직 화면에 표시되지 않은 경우입니다. 뷰를 추가하기 전에 슈퍼 뷰에 추가하여 뷰를 보이게 하거나 setNeedsDisplay 메서드를 호출하여 뷰를 다시 그리도록 지정해야합니다. 추가하려는 뷰가 슈퍼 뷰와 이미 서로 다른 계층 구조에 있을 때 발생합니다. 뷰를 서로 다른 뷰 컨트롤러에서 사용하거나 슈퍼 뷰와 상관없는 뷰를 만들려는 경우입니다. 추가하려는 뷰.. 2023. 3. 15.
데코레이터 패턴(Decorator Pattern) 데코레이터 패턴(Decorator Pattern)이란? 데코레이터 패턴은 객체 지향 디자인 패턴 중 하나로, 기존의 객체에 새로운 기능을 동적으로 추가하기 위한 패턴입니다. 데코레이터 패턴을 사용하면, 기존 코드를 수정하지 않고도 객체의 책임과 역할을 확장할 수 있어 유연성이 높은 패턴입니다. 데코레이터 패턴의 구성요소 데코레이터 패턴은 다음과 같이 구성됩니다. Component: 데코레이터 패턴에서 추가 기능을 부여할 객체의 인터페이스 역할을 합니다. ConcreteComponent: Component 인터페이스를 구현한 구체적인 객체입니다. Decorator: Component 인터페이스를 구현하고, 추가 기능을 부여할 객체의 추상 클래스입니다. ConcreteDecorator: Decorator 클.. 2023. 3. 15.
어댑터 패턴(Adapter Pattern) 어댑터 패턴은 호환되지 않는 인터페이스를 가진 클래스를 클라이언트에서 사용할 수 있게 만드는 패턴으로, 실제로 많은 경우에서 사용됩니다. 예를 들어, 다음과 같은 경우가 있습니다. 1. 외부 라이브러리를 사용하는 경우 외부 라이브러리를 사용할 때, 라이브러리가 제공하는 인터페이스가 클라이언트에서 사용해야 하는 인터페이스와 다를 수 있습니다. 이 경우, 어댑터 패턴을 사용하여 외부 라이브러리를 클라이언트에서 쉽게 사용할 수 있게 합니다. // 외부 라이브러리의 인터페이스 class ExternalLib { func doSomethingComplicated() { // ... } } // 클라이언트가 사용할 인터페이스 protocol MyLib { func doSomethingSimple() } // 어댑터.. 2023. 3. 13.
Swift5.0 향후 변경 될 수 있는 Enum(열거형) switch @unknown 속성 처리 SE-0192 안녕하세요~! 오늘은 Enum에 대해서 이야기 해보려고 하는데요. 이번 Swift5.0에서 추가된 @unknown 속성에 대해서 이야기 해보려고 합니다. 어떤 역할을 하는지 같이 보시죠~! 보통 Enum값 분기처리시 Switch문을 많이 사용하는데요. enum에 있는 모든 case들을 무조건 처리 해야합니다. @unknown 속성을 사용해서 미묘하게 다른 두 가지 방법을 구분할 수 있는데요 아래 예시를 보겠습니다. 패스워드 입력시 발생 할 수 있는 에러를 간략하게 enum으로 표현했습니다 enum PasswordError: Error { case short case obvious case simple } 에러 처리를 하는 모습을 볼 수 있습니다. func showPasswordError(_ error: .. 2023. 1. 3.
반응형