일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 파사드패턴
- unowned
- 싱글턴패턴
- SWIFT
- 컴포지트패턴
- RxSwift
- 상태패턴
- Scenedelegate
- 템플릿메서드
- Xcode
- 스트래터지패턴
- WKWebView
- DispatchQueue
- 어댑터패턴
- ios
- ViewController
- 컴파운드패턴
- 전략패턴
- 프록시패턴
- 커맨드패턴
- 데코레이터패턴
- Lifecycle
- 스테이트패턴
- 팩토리메서드패턴
- 옵저버패턴
- 추상팩토리패턴
- 디자인패턴
- cocoapods
- Mobile
- 이터레이터패턴
- Today
- Total
목록전체 글 (65)
ios dev kangwook.
XCFramework란? 애플의 프레임워크 포장을 위한 새로운 형식이라고 할 수 있겠다. 개발자가 편리하게 하나의 번들에 여러 플랫폼 및 아키텍처에 대한 바이너리 라이브러리를 배포할 수 있다. 더 이상 여러 아키텍처를 단일 바이너리로 병합할 필요가 없다! XCFramework 구축 방법 Build Options에서 Build Libraries for Distribution 빌드 설정 → Yes 모듈의 공개 API를 보여주는 모듈 인터페이스 파일을 만들어 준다. 1. 지원하려는 각 플랫폼에 대한 슬라이스를 보관(Archive) → 여러 환경에 맞는 프레임워크의 변형을 만드는 과정이라 할 수 있겠다. ex) iOS, iOS Simulator, macOS ... 이제 커맨드를 통해 archive를 빌드해보자...

서로 관련이 있는 객체들을 묶어서 팩토리 클래스로 만들고, 이러한 팩토리들을 조건에 따라 생성하도록 추상 팩토리를 만들어서 객체를 생성하는 패턴 Abstract Factory Pattern Abstract Factory Pattern은 구체적인 클래스를 지정하지 않고 관련 객체 또는 종속 객체를 구현하는 인터페이스를 제공한다. AbstractProduct : 팩토리 메서드로 생성될 객체의 공통 인터페이스 ConcreteProduct : 구체적으로 객체가 생성되는 클래스 AbstractFactory : Product타입을 반환하는 팩토리 메서드를 갖는 클래스의 공통 인터페이스 ConcreteFactory : 추상 팩토리를 구현하는 구현 클래스 Abstract Factory Pattern 예제 피자를 만들 ..

iOS를 하면서 가장 많이 쓰는 툴이라고 하면 단연코 CocoaPods이라고 할 수 있겠다. 하지만 내가 직접 만든 프레임워크를 CocoaPods을 통해서 내 다른 프로젝트에서 쓴다던가, 모듈화 시켜서 CocoaPods에서 지속적으로 업데이트하며 쓰는 방법이 없을까 하고 열심히 방법을 찾아보았다. 직접 만들어보면서 정리해보도록 하겠다. 참고로 Fat Framework가 아닌 XCFramework를 만들거고, 이를 CocoaPods으로 Private하게 배포할 목적으로 만들거다. 1. Framework를 위한 Git Repository 생성 → Readme, License 추가 여기서 Readme랑 License 추가를 꼭해줘야한다. 2. Podspec을 위한 Git Repository 생성 CocoaPo..
iOS개발을 하다보면 Closure는 필수적으로 알아야하는 개념이라고 할 수 있다. 이 Closure가 뭔지 확실하게 알고 넘어가야할 것 같아서 정리를 하려고한다. Closure 일반적으로 Closure는 익명함수라고 알고 있는 사람들이 많을 것 같다. 왜냐면 보통 다 그렇게 생겼음 얘들이.. 근데 이게 사실 그렇지가 않고 일반적으로 우리가 아는 함수들도 다 Closure 의 한 형태라고 생각하면 될 것 같다. 그럼 하나씩 살펴보도록 하자. 기본 클로저 {(매개변수들) -> 반환 타입 in 실행코드} 클로저를 사용하지 않았을 때와 사용했을 때의 코드 비교 func backwards(first: String, second: String) -> Bool { return first > second } let ..

객체 생성 처리를 서브 클래스로 분리해서 처리하도록 캡슐화하는 패턴 Factory Method Pattern Factory Method Pattern은 객체를 생성하기 위한 인터페이스를 정의하지만, 하위 클래스가 인스턴스화할 클래스를 결정할 수 있다. 즉, Factory Method를 활용하면 클래스가 인스턴스화 하는 것을 하위 클래스로 연기할 수 있다. Product : 팩토리 메서드로 생성될 객체의 공통 클래스 ConcreteProduct : 구체적으로 객체가 생성되는 클래스 Creator(Factory) : Product타입을 반환하는 팩토리 메서드를 갖는 클래스 ConcreteCreator(ConcreteFactory) : 팩토리 메서드를 구현하는 클래스 Factory Method Pattern ..

iOS 개발자로써 항상 고민되는 것이 있다. Closure 내에서 self를 캡쳐할 때 [weak self]를 사용할 경우 guard let self = self 를 써야할까? 아니면 self?.(Optional Chaining)를 써야할까? 이에 대해 확실하게 공부할겸 정리를 해야겠다. [weak self] closure를 쓸 때 종종 우리는 [weak self]를 써야하는 순간이 오곤 한다. 이걸 왜쓰냐! self를 사용할 때 순환참조로 인한 메모리릭을 방지하기 위해서 쓰는 거다. 근데 이걸 언제 쓰냐면 escaping 클로저 내부에서 delay deallocation 발생할 경우에 쓴다. 예를 들면 비동기 처리를 한다던가(API 등).. 타이머라던가.. 정확하게 알고싶으면 아래 참조의 링크를 들어가..

주어진 주어진 상황 및 용도에 따라 어떤 객체에 책임과 기능을 객체의 결합을 통해 동적으로 유연하게 추가하는 패턴 Decorator Pattern Decorator pattern은 객체에 동적으로 추가 책임을 부여한다. 뿐만 아니라 기능 확장을 위한 자식 클래스에 대해 유연한 대안을 제공한다. Component : 동적으로 추가할 서비스를 가질 수 있는 객체 ConcreteComponent : Decorate를 받을 객체 → 기능 추가를 받을 실질적인 기본(base) 객체 Decorator : Decorate를 할 객체의 추상 클래스 ConcreteDecorator : Decorator를 상속받아 구현할 다양한 기능 객체들 Decorator Pattern 특징 ex) DarkRoast 커피 Decorat..

객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 알림을 주도록 하는 디자인 패턴 Observer Pattern Observer Pattern은 객체 간의 일대다(one to many) 의존성을 정의하여 하나의 객체가 상태를 변경할 때 모든 종속자에게 자동으로 알림과 업데이트를 제공한다. Subject : Observer를 알고 있는 주체. Observer를 등록하고 제거하는 데 필요한 인터페이스를 정의 Observer : Subject에서 변화했다고 알렸을 때 갱신해야하는데 필요한 인터페이스를 정의 ConcreteSubject : 객체(Observer)에게 알려줘야할 상태를 지정, notify 해야할..