Daily iOS
동시성

느린 API와 화면 이탈

상세 화면에 들어가면 아래처럼 API를 호출해 데이터를 보여줍니다.

final class DetailViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        api.fetchDetail(id: id) { result in
            self.render(result)
        }
    }
}

면접관이 묻습니다. "응답이 오기 전에 사용자가 뒤로 가기를 누르면 어떻게 되죠?" 이 코드에서 생길 수 있는 문제와, 떠난 화면의 요청이 낭비되지 않게 하는 해결책을 설명하세요.

면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
짧은 답 보기

뒤로 간 뒤 도착한 응답이 해제된(또는 다른) 화면을 갱신하거나 strong 캡처로 화면이 해제되지 않고, 요청 자체는 계속 진행돼 자원을 낭비한다. 해결: 요청을 Task로 보관해 화면 종료 시 cancel(SwiftUI .task는 자동), [weak self], CancellationError 분기.

받은 질문 공유