목록Swift (63)
study record
Struct 내 Class 프로퍼티는 복사될까? Struct는 값 타입으로 값을 복사한다.그렇다면 Struct 내의 Class 프로퍼티는 복사될까 아니면 참조 주소 값을 공유하게 될까? 정답은 Struct 내의 Class 프로퍼티는 참조 주소 값을 공유한다.이에 다음과 같은 문제가 발생할 수 있다. 📌 "Struct의 class 프로퍼티에서 생길 수 있는 문제?1. 문제 개요Swift에서 struct(값 타입) 내에 클래스(참조 타입) 프로퍼티를 포함할 때, 참조 타입이므로 원본이 공유될 수 있는 문제가 있다.특히 클래스가 상속(subclassing) 될 수 있는 경우, 원치 않는 변경이 발생할 수 있다. 2. 어떤 문제가 발생할 수 있나?만약 struct 내에 참조 타입인 클래스 프로퍼티가 있고, ..
RxSwift에서 유용하게 사용하는 flatMapLatest (가장 최근에 생성된 Observable의 값만 만들고자 할 때)Combine에서 map + switchLatest를 통해 flatMapLatest처럼 사용하기 알아봅시다! map이 단순하게 값을 변형하는 것이라면,flatMap동작 방식입력 데이터를 새로운 스트림(Publisher/Observable)로 변환한 뒤, 이 스트림을 병합하여 단일 스트림으로 반환합니다.입력당 여러 개의 출력이 가능하며, 모든 스트림이 병렬로 실행됩니다.사용하는 상황입력값으로 새로운 스트림을 생성해야 할 때.병렬적으로 여러 작업을 처리하며, 결과를 단일 스트림으로 병합하고 싶을 때. import RxSwiftlet disposeBag = DisposeBag()let..
* 'Combine: Asynchronous Programming With Swift' 책을 읽고 작성하는 글입니다. 이 책의 목적: Combine framework를 소개하고, Swift로 선언형 리액티브 앱 작성하기 Combine은 앱의 이벤트 처리에 대한 선언형 접근을 제공한다. 다양한 delegate callback과 completion handler closure 사용보다 하나의 chain을 만들 수 있다. 각 체인의 파트는 이전 스텝으로부터 받은 값들의 고유한 액션을 수행하는 Combine operator이다.Combine이 무슨 프레임워크인지?Combine은 Swift에서 비동기 이벤트 처리와 반응형 프로그래밍을 위해 제공되는 프레임워크 Combine 프레임워크는 Swift에서 제공하는 특..
DispatchSemaphoreAn object that controls access to a resource across multiple execution contexts through use of a traditional counting semaphore.전통적인 카운팅 세마포어의 사용을 통해 다양한 실행 컨텍스트들에서의 접근을 통제하는 객체이다.class DispatchSemaphore : DispatchObject 디스패치 세마포어는 전통적인 카운팅 세마포어의 효율적인 구현이다. 디스패치 세마포어는 호출 스레드를 차단해야 할 때만 커널을 호출한다. 호출 세마포어가 차단될 필요가 없으면 커널 호출이 이루어지지 않는다. 세마포어 카운트를 증가시키려면 signal() 메서드를 호출하고, 세마포어 카운트..