본문 바로가기
Swift

[iOS] About Subscribe, Bind, Driver + @

by dsungc 2024. 8. 17.

 

오늘은 Subscribe, Bind, Driver에 대해 이야기 해보려고 합니다!!

 

이들은 모두 Observable이나 Driver 등의 스트림을 구독하고,

해당 스트림에서 발생하는 이벤트를 처리하는 역할하하는데요!! 좀 더 자세하게 들어가보죠

 

 

Subscribe

- Observable이 이벤트를 내보낼 때마다 해당 이벤트를 관찰하고 처리하는 작업 진행

- 에러 처리, 스레드 지정 가능

Bind

- Bind의 내부에 Subscribe가 존재

- 방출한 이벤트를 Binder (UI 업데이트에 사용되는 옵저버, onNext 이벤트에 대해서만 반응) 에게 전달

- Binder 덕에 에러 없이 우리가 UI요소를 처리할 때 주로 사용

- 스레드 지정 가능

 

Drive

- 역시 주로 UI에 사용, 오직 메인스레드에서만 실행

- Driver 타입에서 사용되는 메서드

- 스트림을 하나로 유지 > 메모리 관리에 효율적

 


 

비교하는 김에 이들과 함께 사용할 수 있는 Throttle과 Debounce도 비교하고 글 마무리 해보려고 합니다.

 

우선 공통점은 과도한 요청, 처리를 수행하게 될 경우에 발생할 수 있는 성능 저하를 막기 위해 이를 제어하여 성능을 개선하도록 해주는 메서드들입니다.

 

 

Throttle

- 일정 시간을 정해주고, 이 시간 동안 가장 처음 발생한 이벤트를 허용

- 그 이후에는 지정된 시간 간격 내에서 발생한 다른 이벤트들을 무시

- Ex) 버튼 클릭과 같은 사용자가 자주 발생시키는 액션을 제한

 

Debounce

- Throttle과는 다르게 연속적으로 호출되는 함수 중 마지막 함수만 호출

- Ex) 텍스트 필드에 텍스트 입력시, 일정 시간 동안 입력이 멈추면 마지막 값을 처리

   👉 실시간 검색이라고 생각하면, 타이핑을 멈춘 후 일정 시간이 지나야 서버에 네트워크 요청하기 때문에 부하 ↓

 

자 요기까지 사용할 때 좀 헷갈리거나 확실히 알고 골라 쓰면 좋겠다 싶은 친구들에 대해 간략하게 정리해보았습니다.

과연 다음 글은 무엇이 될지.. 

공부 열심히 하고 다시 끄적이러 오겠습니다..

I'll be back.

.

.

.

.

 

 

 

 

 

'Swift' 카테고리의 다른 글

[iOS] About GCD (Grand Central Dispatch)  (2) 2024.08.24
[iOS] About Pagination  (0) 2024.08.21
[iOS] About RxSwift  (0) 2024.08.11
[iOS] About 램 모델클래스 > 구조체  (0) 2024.08.08
[iOS] About Property Wrapper  (0) 2024.08.04