딱 한 가지만 지킨다. 평일 중 매일 1가지의 TIL을 기록하고 자정이 되면 그 내용을 공유한다.
Protocol -> BaseView
BottomSheet + PanGesture
@UIApplicationMain @main
Self-Sizing CollectionView (동적 width) [1 / 2]
Self-Sizing CollectionView (동적 width) [2 / 2]
Array의 index out of range 방지
String Extension
APIKey 숨기기
모듈화 개념 Library vs Framework
UITest [1 / 3]
UITest [2 / 3]
UITest [3 / 3]
Realm vs CoreData ⭐️
Realm 사용해보기 ⭐️
final 키워드의 성능적 이점 (Static Dispatch, DynamicDispatch) [1 / 2] ⭐️
final 키워드의 성능적 이점 (실제 코드 예시) [2 / 2]
계산 프로퍼티 getter, setter
저장 프로퍼티 lazy
타입 프로퍼티 static
속성 프로퍼티 willSet, didSet
인스턴스 메서드
타입 메서드 class, static
서브스크립트 subscript
UserDefaults에 대한 개인적인 생각
UserDefaults 그리고 PropertyListDecode
클래스와 구조체는 언제 사용해야 할까? + 차이점 ⭐️
클래스와 구조체를 사용하는 이유 ⭐️
클래스 초기화 init ⭐
ARC ⭐️
강한 참조, 약한 참조, 미소유 참조 ⭐️
순환 참조를 확인하는 방법 ⭐️
동시성 프로그래밍의 문제점 (Thread-safe / 교착상태) ⭐️
UI를 MainThread에서 업데이트 하는 이유
Blocking vs Non-Blocking / Sync vs Async ⭐️
GCD 예시 (DipsatchQueue.main.sync) ⭐️
Observables
초콜릿 앱 만들기
RxSwift + MVVM (Input, Output)
PHPhotoLibrary 권한 설정
combineLatest + UIImage
Obeservable와 Observer
DisposeBag
BehaviorSubject, PublishSubject 차이
UI에서 Relay를 주로 사용하는 이유
Cold Obseverable Hot Observerable
Combining Operator [1/2] (Prefixing and concatenating)
Combining Operator [2/2] (Triggers)
extension Reactive where Base
drive vs bind vs subscribe
Relay, Signal, Drive
HTTP, HTTPS, Socket ⭐️
OOP의 특징 ⭐️
DI, DIP
MVVM + URLSession
MVVM 데이터 전달
MVC -> MVVM 리팩토링