compactMap
compactMap은 Swift의 컬렉션(Array, Set, Dictionary 등)에서 조건에 맞체 변환을 시도하여 nil이 나오는 값을 제외함 예제 코드 let numbers = ["1", "2", "three", "4"] let converted = numbers.compactMap { Int($0) } // 조건 : 인자를 정수로 변환 ...
compactMap은 Swift의 컬렉션(Array, Set, Dictionary 등)에서 조건에 맞체 변환을 시도하여 nil이 나오는 값을 제외함 예제 코드 let numbers = ["1", "2", "three", "4"] let converted = numbers.compactMap { Int($0) } // 조건 : 인자를 정수로 변환 ...
bind는 RxSwift에서 옵저버블(Observable)의 결과를 특정 대상에 연결할 때 사용하는 메서드. bind의 특징: UI 업데이트에 자주 사용됨 → 예: UILabel.text, UIButton.isEnabled Main Thread에서 실행됨 → UI 업데이트를 안전하게 처리 가능 수동 구독 불필요 → subscribe(o...
결론 : 그렇게 하면 안된다. 이유 약한 참조일 경우 객체가 필요한 시점에 이미 메모리에서 해제되기 때문에 nil참조를 하게 되고 오류가 발생함. 강한 참조는 객체의 수명을 제어하기 때문에 강한 참조가 필요함. 순환 참조가 발생할 경우에만 약한 참조 실행. 순환 참조가 발생하는 경우 ```swift class MyCl...
1. 값 타입은 ‘복사’ , 참조 타입은 ‘바로가기’ 값 타입: 변수에 저장시 인스턴스를 복사하여 변수에 저장 참조 타입: 변수에 저장시 인스턴스를 힙 메모리(메모리 누수 디버깅 가이드 참조)에 저장하고, 그 메모리 주소값을 변수에 저장 2. 값 타입은 불변성이 있다. 값 타입은 매번 복사되기 때문에 데이터가 바뀌지 않음. 참...
RxSwift BehaviorRelay란? BehaviorRelay는 최신 값을 항상 저장하고, .value로 읽을 수 있는 RxSwift의 래퍼(Wrapper) 객체입니다. 값을 변경할 때는 .accept()를 사용하며, BehaviorSubject와 다르게 .completed 또는 .error 상태가 없습니다. RxSw...
1. RxTableViewSecionReloadDataSource 생성 RxDataSource는 데이터의 섹션과 셀을 정의하는 클로저를 통해 UITableView를 관리합니다. let dataSource = RxTableViewSectionReloadDataSource<SectionModel<String, String>>...
PublishRelay는 PublishSubject를 대체하는 Relay타입으로, 초기값 없이 이벤트를 방출하며, 새로운 구독자는 새로운 값부터 수신합니다. .accept로 값을 추가하고, .completed나 .error없이 동작합니다. 사용 예제 import RxSwift import RxRelay let relay = Publi...
BehaviorRelay는 내부적으로 BehaviorSubject를 감싸고 있기 때문이다. BehaviorRelay는 Relay 타입이지만, 내부적으로 BehaviorSubject를 사용하여 동작 BehaviorSubject는 Observable 프로토콜을 준수하므로, subscribe를 사용 가능 즉, BehaviorRelay 자체가 ...
switch case에 case(let response) 라는 형태에 대한 문법적인 설명 예제 코드 enum Result<T> { case success(T) case failure(Error) } let result: Result<String> = .success("데이터 로딩 성공") switch resu...
Set은 순서가 없고, 중복을 허용하지 않는 컬렉션 타입이다. 탐색 속도가 배열에 비해서 빠르다. 특정한 순서없이 저장되기 때문에 반복문을 사용할때마다 순서가 달라진다. Set 선언 및 초기화 var numbers: Set<Int> = [1, 2, 3, 4, 5] print(numbers) // 출력 예시: [5, 3, 1, 2...