일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 옵저버패턴
- Xcode
- 컴파운드패턴
- Mobile
- 프록시패턴
- 팩토리메서드패턴
- 스테이트패턴
- 전략패턴
- ViewController
- 컴포지트패턴
- DispatchQueue
- 추상팩토리패턴
- WKWebView
- 싱글턴패턴
- 커맨드패턴
- SWIFT
- unowned
- 디자인패턴
- cocoapods
- ios
- 스트래터지패턴
- Lifecycle
- 어댑터패턴
- 상태패턴
- RxSwift
- 데코레이터패턴
- 이터레이터패턴
- 파사드패턴
- 템플릿메서드
- Scenedelegate
- Today
- Total
목록분류 전체보기 (65)
ios dev kangwook.

어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴 Template Method Pattern Template Method 패턴은 메소드에서 알고리즘의 뼈대를 정의하고 일부 단계를 하위 클래스로 미룬다. 즉, Template Method를 사용하면 알고리즘의 구조를 변경하지 않고 알고리즘의 특정 단계를 다시 정의할 수 있다. Abstract Class 템플릿 메서드를 정의하는 클래스 하위 클래스에 공통 알고리즘을 정의하고 하위 클래스에서 구현될 기능을 primitive 메서드로 정의하는 클래스 ConcreteClass 물려받은 primitive 메서드를 구현하는 클래스 상위 클래스에 구현된 템플릿 메서드의 일반적인 알..

iOS에는 독특한 메모리 관리 방식이 있다. 원래 Objective-C는 MRC라고 수동적으로 레퍼런스 카운트를 증가시키는 방식을 해왔었다. retain, release 등을 사용해서 메모리를 관리해 왔다고 한다. 근데 Swift부터는 ARC라고해서 자동으로 레퍼런스 카운트를 증가시키는 메모리 관리 방식을 채택했다. 이 ARC는 참조 타입에만 적용이 되고(클래스 등) 값타입에는 적용이 안된다. compile time에 실행되고, retain cycle에 유의해야 한다. 이 retain cycle이 뭐냐면 어떤 두 레퍼런스가 서로를 참조하고 있을 경우 발생하는 거라고 할 수 있겠다. 예를 한 번 들어보자 class A { var some: A? } var a = A() var b = A() a.some =..

App Life Cycle Not Running 아무 것도 실행하지 않은 상태 또는 실행 중이지만 시스템에 의해 종료된 상태 InActive 앱이 Foreground 상태로 돌아가지만 이벤트는 받지 않는 상태 앱의 상태 전환 과정에서 잠깐 머무는 단계 Active 일반적으로 앱이 돌아가는 상태 Background 앱이 Suspended 상태로 진입하기 전 거치는 단계 Suspended 앱이 Background 상태에 있지만 아무 코드도 실행하지 않는 상태 리소스가 해제됨 View Life Cycle loadView 컨트롤러가 관리하는 뷰를 만드는 역할을 함 뷰를 만들고 메모리에 울림 이 메서드를 직접 호출하면 안됨 viewDidLoad ViewController가 메모리에 로드된 후 호출 특별한 경우가 ..

어떤 소프트웨어의 다른 커다란 코드 부분에 대하여 간략화된 인터페이스를 제공해주는 디자인 패턴 Facade Pattern Facade Pattern은 하위 시스템의 인터페이스 집합에 통일된 인터페이스를 제공한다. 즉, Facade Pattern은 하위 시스템을 더 쉽게 사용할 수 있는 더 높은 수준의 인터페이스를 정의하는 패턴이다. 다양한 서브시스템이 함께 이용되는 시스템에서 facade 클래스는 이 서브 시스템들을 추상화할 수 있음 Client는 서브시스템의 존재를 모르고 facade 클래스만 알고 있으며 facade 클래스에만 접근 할 수 있음 Client와 서브시스템은 의존성이 제거됨 Facade Pattern 예제 홈씨어터를 Client가 사용하는 예제 기존의 클래스들은 위와 같이 각 장치들이 여..

코드를 재사용하기 위해 구조를 변경해서 클래스들이 호환될 수 있게 연결시키는 패턴 Adapter Pattern Adapter Pattern은 클래스의 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 변환한다. 호환되지 않는 인터페이스로 인해 작동하지 않는 클래스를 Adapter Pattern을 통해 함께 작동할 수 있게 한다. Client : Client는 Target 인터페이스만 볼 수 있고 Adaptee를 사용하기 위한 요청을 보냄 Target : 클라이언트가 보내는 요청에 대한 메소드를 가지고 있음 Adapter : Target 인터페이스를 구현하며 Client와 Adaptee 중간에서 호환성이 없는 둘을 연결시켜주는 클래스 Adaptee : Client가 사용하려는 클래스 Adapter Pat..
iOS에서 Web을 여는 방식은 뭐 3가지인데 크게 두가지라고 볼 수 있다. 왜냐면 Safari로 여는 방식 2개와 WebView를 띄우는 방식 1개이기 때문이다. 그럼 먼저 Safari부터 차근차근 알아보자. Safari 앱 자체로 여는건 다루지 않을 예정임 ㅇㅇ SFSafariViewController App 내에서 웹을 여는 방식 Safari에서 사용하는 기능들을 전부 사용할 수 있다. 뒤로 가기, 앞으로 가기, 공유하기 등등 다 된다. 하지만 URL을 입력하는 것은 불가능하다. 아이폰의 Safari와 쿠키 정보들을 공유할 수 있다. 하지만 이 정보들을 앱에서는 사용할 수 없다는게 중요하다. 보여주기만 하고 SFSafariViewController 내에서만 활용이 된다는 뜻 Delegate를 이용해..

클라이언트가 보낸 요청을 객체로 캡슐화하여 이를 나중에 이용할 수 있도록 관리하는 패턴 Command Pattern Command Pattern은 요청을 객체로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 메서드 이름, 매개변수 등 요청에 필요한 정보를 저장 또는 취소할 수 있게하는 패턴이다. Invoker : 커맨드를 저장하는 객체 Command : Receiver에게 동작을 수행하도록 요청하는 메서드를 가진 인터페이스 ConcreteCommand : Command의 여러가지 동작들을 구체적으로 구현하는 클래스 Receiver : 요구 사항을 수행하기 위해 어떤 일을 처리해야 하는지 알고 있는 객체 식당에서 발생하는 event로 이해하는 Command Pattern 고객이 웨이트리스에게 주..

전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴 Singleton Pattern Singleton Pattern은 클래스에 인스턴스가 하나만 있는지 확인하고, 클래스에 대해 전역적으로 접근할 수 있는 지점(point)를 제공한다. uniqueInstance 멤버 변수는 Singleton의 유일한 인스턴스 getInstance 메서드는 static이어서 Singleton.getInstance()를 사용하여 사용자의 코드 어느 곳에서나 이 메소드에 편리하게 액세스할 수 있음 Singleton 패턴을 사용하는 이유 고정된 메모리 영역을 얻으면서 한 번의 객체 생성으로 인스턴스를 사용하기 때문에 메모리 낭비 방지 싱글톤으로 만들어진 클래스의 인스..