2
respostas

Remoção dos coordinators

Implementei a remoção dos coordinator conforme o que foi exposto das classes para remoção dos coordinator da aula05 item08, mas não vi o funcionamento específico. Além de eu colocar um break point na função viewDidDisappear da classe: ProductDetailsViewController e ele não parar quando a navegação foi finalizada, a classe ProductListCoordinator não parou de dar erro enquanto não adicionei CoordinatorDelegate como herança e não conformei o protocolo para a seguinte declaração: productDetailsCoordinator.delegate = self.

Estou a disposição para falar e esclarecer as dúvidasInsira aqui a descrição dessa imagem para ajudar na acessibilidade

Meu xcode está na versão: Version 16.1 (16B40) meu Mac está com o Sequoia 15.3.1 -> iOS 17.3

2 respostas

Olá Luiz!

A remoção correta dos coordinators é crucial para evitar vazamentos de memória e garantir que seu aplicativo iOS funcione de forma eficiente.

Para garantir a remoção correta dos coordinators, verifique se o ProductDetailsViewController está sendo removido da hierarquia de view controllers e se o método deinit está sendo chamado.

Confirme se a propriedade coordinator do ProductDetailsViewController está sendo definida corretamente e se o ProductsListCoordinator está sendo definido como o delegate do ProductDetailsCoordinator antes da navegação. Adicione o método deinit nas classes Coordinator para verificar se a classe está sendo desalocada da memória.

Espero ter ajudado! Bons estudos!

Sucesso

Para garantir a remoção correta dos coordinators, verifique se o ProductDetailsViewController está sendo removido da hierarquia de view controllers e se o método deinit está sendo chamado. R: O método deinit nem existe no meu código, uma dúvida. Seguindo o material passado, por que o deinit não está configurado no exemplo que foi dado para ser seguido? Ele está incompleto? Se a proposta era que procurássemos uma maneira de fazer essa remoção, não foi proposto, talvez por isso a sequência que segui não está funcional.

a remoção da hierarquia é justamente o método que não está sendo chamado: override func viewDidDisappear(_ animated: Bool) { super.viewDidAppear(animated)

    if self.isMovingFromParent {
        coordinator?.didFinish()
    }
}

Confirme se a propriedade coordinator do ProductDetailsViewController está sendo definida corretamente e se o ProductsListCoordinator está sendo definido como o delegate do ProductDetailsCoordinator antes da navegação. Adicione o método deinit nas classes Coordinator para verificar se a classe está sendo desalocada da memória. R: Não entendi como eu deveria usar para fazer essa verificação, pode me passar um exemplo? Insira aqui a descrição dessa imagem para ajudar na acessibilidade