iOS/SwiftUI
Cancellables in Combine
당근쥬스
2023. 10. 23. 09:29
반응형
Combine에서 "cancellable"은 퍼블리셔에 대한 구독을 관리 및 종료하여 메모리 누수를 방지하고 데이터 흐름을 제어할 수 있는 개체입니다.
예제:
import Combine
// 값을 내보내는 간단한 퍼블리셔 생성
let publisher = Just("Hello, Combine!")
// 퍼블리셔를 구독하고 취소 가능한 항목을 저장합니다.
let cancellable = publisher.sink { value in
print(value)
}
// 나중에 구독이 더 이상 필요하지 않으면 취소.
cancellable.cancel()
- Publisher 생성: 이 예에서는 Just 를 사용하여 publicher라는 Publisher를 생성합니다. 이 Publish는 단일 값(이 경우 "Hello, Combine!") 문자열을 내보냅니다.
- Publisher 구독: publisher를 구독하기 위해 sink 연산자를 사용합니다. sink 연산자는 publisher가 값을 내보낼 때 실행되는 클로저를 정의합니다. 이 경우 방출된 값을 인쇄합니다.
- Cancellable 항목 저장: sink를 호출하면 취소 가능 변수에 저장되는 취소 가능 개체가 반환됩니다. 이 취소 가능 항목은 publisher에 대한 구독을 나타냅니다. 이를 통해 구독의 라이프 사이클을 제어할 수 있습니다.
- Subscription 취소: 어느 시점에서 publisher가 더 이상 필요하지 않거나 리소스를 정리하려는 경우 cancellable에서 cancel() 메서드를 호출할 수 있습니다. 이렇게 하면 publisher에 대한 구독이 효과적으로 중지됩니다. 취소 후에는 게시자가 더 이상 값을 내보내지 않으며 구독과 관련된 모든 리소스를 정리할 수 있습니다.
Cancellable 항목은 구독(subscription)을 관리할 수 있게 해주기 때문에 Combine에서 필수적입니다. 그렇지 않으면 구독(subscriptions)이 무기한으로 계속되어 메모리 누수 및 예상치 못한 동작이 발생할 수 있습니다. 더 이상 필요하지 않은 구독을 취소하면 Combine 기반 애플리케이션에서 적절한 리소스 관리와 데이터 흐름 제어가 보장됩니다.
반응형