AnyCancellable은 Cancellable이라는 프로토콜의 구현체로, 메모리 관리와 리소스 관리 차원에서 굉장히 중요한 역할을 담당하고 있어요.
Cancellable은 cancel()
단 한개의 메서드만 가지고 있어요.
public protocol Cancellable {
func cancel()
}
이 메서드를 호출하면 구독이 취소되고, Publisher로부터 더 이상 데이터 스트림을 받지 않아요.
이 개념이 굉장히 중요한 이유는 구독을 취소하지 않으면 메모리 누수가 발생하게 되어 앱 성능이 떨어지게 돼요!
이제 Cancellable을 구현한 AnyCancellable에 대해 알아볼게요.
Set<AnyCancellable>
변수에 저장해요. Set이 소멸할 때 한 번에 관련 구독상태들을 전부 취소할 수 있기 때문이에요.Publisher을 구독할 때 항상 .store(in: &cancellables)
를 붙이던 거, 기억나시나요?