일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- async
- 리스트뷰
- 프래그먼트
- concurrency
- 백준
- View
- RxSwift
- 옵셔널
- 프로퍼티
- 생명주기
- noncopyable
- 이스케이핑
- 클로저
- 연산자
- Subject
- 알고리즘
- 프로그래머스
- 자바
- 차이
- 해시
- weak
- 스위프트
- Swift
- ios
- 구조체
- 풀이
- 안드로이드
- Self
- observable
- rx
- Today
- Total
목록Swift (65)
study record
💫 SE-0390Noncopyable structs and enums Motivation현재 Swift에서 존재하는 모든 타입은 복사 가능(copyable) 하므로, 해당 타입의 값에 대해 여러 개의 동일하고 교환 가능한 표현을 생성할 수 있습니다.하지만, 복사 가능한 구조체(struct)와 열거형(enum)은 고유한 자원(unique resource)을 모델링하는 데 적합하지 않습니다.반면, 클래스(class)는 객체가 한 번 초기화되면 고유한 정체성(unique identity)을 가지므로 고유한 자원을 표현할 수 있습니다. 하지만 클래스의 참조(reference)는 여전히 복사 가능하기 때문에, 클래스는 항상 자원의 공유 소유권(shared ownership)을 요구합니다.이러한 공유 소유권은 다..
1️⃣ SE-0366 consume operator to end the lifetime of a variable binding값을 복사하거나 참조를 넘기는 형태가 아닌, 값의 소유권을 이전키워드 consumeSwift5.9에서 적용값의 소유권을 이전하여 값을 복사하거나 참조를 전달하는 방법을 사용하지 않도록 하는 성능 최적화 방법ex) consume 키워드를 프로퍼티 앞에 사용하면, 해당 소유권을 이전하여 consume 키워드를 쓴 프로퍼티는 앞으로 사용 불가 (컴파일 에러)useX(x)// do some stuff with local variable x// Ends lifetime of x, y's lifetime begins.let y = consume x// [1]useY(y)// do some s..
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..