Single success 또는 error 이벤트를 한 번만 방출될 수 있다. var disposeBag = DisposeBag() enum TraitsError: Error { case single case maybe case completable } print("-------Single1-------") // 성공시 Single.just(.success("✅")) .subscribe(onSuccess: { print($0) }, onFailure: { _ in print("error") }, onDisposed: { print("disposed") }) .disposed(by: disposeBag) print("-------Single2-------") // 실패시 Observable.just(.fa..
Observable T 형태의 데이터 snapshot 을 전달 할 수 있는 일련의 이벤트를 비동기적으로 생성하는 기능 하나 이상의 observers 가 실시간으로 어떤 이벤트에 반응 세 가지 유형의 이벤트만 방출 enum Event { case next(Element) // next element case error(Swift.Error) // sequence failed with error case completed // sequence terminated successfully } Observable 생명주기 Observable 은 어떤 구성요소를 가지는 next 이벤트를 계속해서 방출할 수 있다. error 이벤트를 방출하여 완전 종료될 수 있다. complete 이벤트를 방출하여 완전 종료 될 수..
GCD Grand Central Dispatch 로 동시성 프로그래밍을 할 수 있게 해주는 C 기반의 저수준 API iOS 에서 DispachQueue 로 처리를 한다. Sync vs Async 동기 작업을 시작하고 끝날때 까지 기다린다. 메인 스레드에서 작업을 진행한다. DispatchQueue.main.sync { // 메인 큐에서 동기 방식으로 실행할 코드 } DispatchQueue.global().sync { // 글로벌 큐에서 동기 방식으로 실행할 코드 } 비동기 작업의 완료를 기다리지 않고 리턴한다. 메인 스레드에서 다른 스레드에 일을 넘기고 작업 완료까지 대기하지 않는다. DispatchQueue.main.async { // 메인 큐에서 비동기 방식으로 실행할 코드 } DispatchQue..
클로저는 클로저의 주기동안 사용이 필요 없어질때까지 힙 영역에 존재하고, 내부에서 클로저 외부에 존재하는 변수를 계속 사용해야 하기 때문에 갭쳐가 발생된다. (캡쳐: 클로저 내부에서 밖에 있는 스코프의 인스턴스를 참조하는 것) 클래스 인스턴스에서 강한 참조 사이클이 발생하듯이 클로저에서도 강한 참조 사이클이 발생할 수 있다. 이러한 강한 참조 사이클을 방지하기 위해 캡쳐리스트를 사용하여 방지한다. 캡쳐리스트를 사용하여 순환 문제 해결 gasMileage 클로저 에서 self 를 통해 Car 클래스 내부의 인스턴스를 참조할때 강한 참조 사이클를 발생하여 myCar 에 nil 을 대입해도 메모리 해제가 안되고 있다. class Car { var totalDrivingDistance = 0.0 var tota..
- Total
- Today
- Yesterday
- nginx
- spark
- pytest
- 리눅스
- linux
- 엘라스틱서치
- ElasticSearch
- WEB
- BigData
- MYSQL
- docker
- network
- 네트워크
- 도커
- python
- logstash
- SQL
- 로그
- SWIFT
- ios
- flask
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |