Daily iOS
메모리·ARC

구독 수명과 메모리 관리

라이브 코딩에서 Combine 을 쓰는 다음 ViewModel 코드를 받았습니다. 가격 스트림을 구독해 priceText에 반영하는 기능을 추가하고, 구독 해제를 어떻게 처리할지 코드와 함께 설명하세요.

final class ProductViewModel {
    @Published var priceText = ""
    private let priceStream: AnyPublisher<Decimal, Never>
    init(priceStream: AnyPublisher<Decimal, Never>) {
        self.priceStream = priceStream
    }
}
면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
짧은 답 보기

sink 결과를 Set<AnyCancellable> 프로퍼티에 store한다. ViewModel이 해제되면 cancellables가 deinit되며 구독이 자동 취소되고, 지역 변수에 두면 함수가 끝나는 즉시 구독이 끊긴다.

받은 질문 공유