RxSwift 개념잡기 목표: 스트림 기반 기본 동작에 대한 이해 개념 절차형 프로그래밍의 한계: 복잡도가 올라갈 수록 유지보수하기 어려워 진다. 스레드에 따른 결과가 달라진다. 그래서 콜백/리스너 개념을 도입 콜백/리스너의 단점 예측 불가능한 순서: 이벤트가 도착하는 순서는 Observer를 등록한 순서에 따라 변경...
RxDataSource 예제를 보며 RxSwift 익히기
RxSwift 개념잡기 목표: table view form library를 rx스럽게 작성하기 예제 RxSwift RxSwift 프로젝트에 포함된 예제를 먼저 살펴보자 SimpleTableViewExampleViewController tableView.rx .modelSelected(String.self) .subscribe(...
Associated Types
요약 asscociatedtype은 protocol에서 구체적인 type을 정하지 않고 해당 프로토콜을 따르는 곳에서 type을 지정할 수 있도록 하는 keyword 이다. 프로토콜을 따르는 곳에서는 typealias로 구체적인 type을 지정할 수 있다. 정의 프로토콜을 정의할 때 associatedType을 쓰는 것이 유용할 때가 있다...
iOS 메모리 관리
1. 레퍼런스 카운트 기본 개념 참조하고 있는 객체의 카운트를 1 올려준다. (retain: 보존하다) 더 이상 사용하지 않으면 카운트를 1 내려준다. (release) 카운트가 0이 되면 객체가 해제된다. (dealloc) 자동 해제 NSAutoreleasePool 다양한 객체의 메모리를 하나하나 관리하기 어렵다. autor...
memory counting
1. strong을 사용하는 경우 내가 정의하는데 중요하다고 참조를 보장해야 하는 경우와 IB에서 아웃렛(IBOutlet)을 연결하는 경우(컨트롤변수, IBOutlet) 메인뷰는 strong을 기본(recommand)으로 잡아준다 ex) XXXAppDelegate.h @property (strong, nonatomic) UIWindow *wi...
iOS zPosition
iOS에서 zPosition을 변경해서 UI로 확인할 때는 뒤에 가있는 것으로 보이는데, 실제로 터치했을 때 우선순위가 여전히 앞서 있어서 뒤에 있는 뷰가 터치되는 현상이 발생했다. zPosition을 변경해서 뒤에 있는 것으로 보이게 할 때는 이러한 오류가 발생할 수 있음을 염두해두고 작업하자. 아래는 플레이그라운드에서 테스트하면서 썼던 예제 코드이...
swift dynamic
dynamic objc 메세지 호출(메세지 디스패치) 메서드를 호출 하거나 프로퍼티를 참조하는 것 objc 런타임의 동적 바인딩 속성과 관련 호출자가 “메서드 f를 실행” 메세지를 객체에 전송하면 객체는 구현체를 찾아 실행하게 됨 여기서 메서드를 찾는다 는 것이 중요 정적 디스패치의 경우 실행될 구현코드가 고정되어 있음 ...