TIL(Today I Learned)
4월 26일(월)
학습내용
- Programming Design Patterns
- 디자인 패턴의 의미
- OOP의 다양한 문제 상황에 대한 예방
- 프로그래머 사이의 협업효율 향상
- 프로그래머 사이의 의사소통 증진
- 코드의 안정화 및 최적화
- 코드의 재사용성 증가
- 천재 선배들의 삽질 기록물이다
- 생성, 구조, 행위에 따라 분류될 수 있다.
- 생성
- Factory
- 객체를 만들어주는 factory 객체를 만드는 패턴.
- factory에게 런타임에 상황에 맞는 객체를 만들어 달라고 할 수 있다.
- Prototype
- Prototype(추상 타입)에 의존하여 인스턴스를 만들 수 있도록 하는 패턴.
- UITableViewCell이 Prototype pattern의 전형적인 예시라고 한다.
- NSCopying을 이용하여 구현할 수 있다.
- Singleton
- 타입의 인스턴스를 한개만 생성하도록 하는패턴.
- Factory
- 구조
- Adapter
- 다른 규격을 호환시켜주는 패턴.
- Decorator
- 추가적인 기능을 더 부가하는 패턴.
- Facade
- 간단한 것만 드러내고 복잡한 것은 가리는 패턴.
- Proxy
- 가벼운 작업을 제공하는 대리자를 제공하여 본래의 무거운 작업을 대신하도록 하는 패턴.
- Adapter
- 행위
- Iterator
- 데이터를 순차적으로 접근할 수 있는 기능을 제공하는 패턴.
- Observer
- event가 발생했을 때 observer들이 바로 반응할 수 있게 하는 패턴.
- Notification, KVO
- Strategy
- 알고리즘을 런타임에 변경할 수 있도록 하는 패턴.
- Iterator
- 생성
- 디자인 패턴의 의미
- 퀴즈
- 엘림라자냐 퀴즈
- touchesBegan은 UITapGestureRecognizer보다 빨리 호출된다.
- 프로퍼티 옵저버가 실행되지 않는 경우는 weak 참조일때 arc에 의해 nil이 할당될 경우이다.
- 꼬말찌로로 퀴즈
- 화면상단에 시계가 있는 bar는 Status Bar이다.
- Swift의 기본 실수형 타입은 Double이다.
- Xcode의 테스트 수행을 위해 필요한 프레임워크는 XCTest이다.
- Xcode를 통해서 수행할 수 있는 테스트의 종류는 Performance Test, Unit Test, UI Test 이다.
- iOS의 TableView는 DataSource 없이도 작동할 수 있다. (Static Table View)
- 병렬처리는 멀티코어 환경에서만 가능하다.
- 시스템 알람이 떴을 때와 같이, 사용자와의 인터렉션을 할 수 없는 상태를 inactive라고 한다.
- Scene은 멀티 윈도우 환경을 지원하기 위해 나온 개념이다.
- AppKit은 Cocoa Touch Framework에 포함되는 프레임워크가 아니다. AppKit은 macOS에서 UI를 그릴때 사용되며 Cocoa Framework에 포함된다.
- Thread는 Stack영역을 독립적으로 갖고, Heap 영역은 공유한다.
- 클래스의 접근제어자가 open, public일때, 하위 메서드의 접근 제어자는 internal이다.
- 접근제한자 open은 클래스에만 적용가능하다.
- iOS에서는 vector 타입인 pdf와 svg 확장자를 기본으로 지원한다.
- 엘림라자냐 퀴즈
문제점/고민한점
- “Thread는 Stack영역을 독립적으로 갖고, Heap 영역은 공유한다.”의 정확한 의미는?
- Open vs Public의 차이는?
해결방법
- 프로세스는 메모리에 대한 Stack, Heap, Data, Code 영역을 갖고 있다. 그리고 쓰레드는 프로세스에서 실행되는 하나의 흐름인데, 프로세스 Heap, Data, Code 영역을 공유하고 Stack 영역은 독립적으로 갖고 있다.
- Public과는 달리 Open은 클래스에만 적용이 가능하다. 그리고 모듈 외부에서도 Subclass(상속)과 override를 가능하게 한다.
참고