Sobes.tech
Middle

Fale-me sobre o ciclo de vida do controlador Vue.

sobes.tech IA

Resposta da IA

O ciclo de vida de um controlador de vista (UIViewController) no iOS representa uma sequência de eventos que ocorrem desde a sua criação até à sua destruição. As principais etapas:

  1. Inicialização:
    • init?(coder aDecoder: NSCoder): Inicialização a partir do Storyboard/Nib.
    • init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?): Inicialização a partir de um arquivo Nib ou programaticamente sem Nib.
    • loadView(): Carregamento ou criação da vista raiz do controlador. Se usar Storyboard/Nib, é chamado automaticamente. Para criação programática, deve ser sobrescrito.
  2. Carregamento da vista:
    • viewDidLoad(): É chamado após a vista do controlador ser carregada na memória. Adequado para configurações de inicialização que não requerem acesso às geometria.
  3. Aparição da vista:
    • viewWillAppear(_ animated: Bool): É chamado pouco antes da vista do controlador se tornar visível. Adequado para atualizar dados que podem mudar entre aparições.
    • viewDidAppear(_ animated: Bool): É chamado após a vista do controlador se tornar visível. Adequado para iniciar animações ou outras tarefas que só devem ser executadas após a visualização completa.
  4. Desaparecimento da vista:
    • viewWillDisappear(_ animated: Bool): É chamado pouco antes da vista do controlador deixar de ser visível. Adequado para guardar estado ou parar atividades.
    • viewDidDisappear(_ animated: Bool): É chamado após a vista do controlador deixar de ser visível. Adequado para libertar recursos ou parar processos que não são necessários em segundo plano.
  5. Alterações no layout:
    • viewWillLayoutSubviews(): É chamado antes das vistas do controlador mudarem de tamanho.
    • viewDidLayoutSubviews(): É chamado após as vistas do controlador terem mudado de tamanho. Adequado para ajustar tamanhos e posições finais.
  6. Alterações na coleção de traços (Trait CollectionDidChange):
    • traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?): É chamado quando as características do ambiente mudam, como o tamanho da classe, densidade de ecrã, modo claro/escuro, etc.
  7. Libertação de memória (Desinicialização):
    • deinit: É chamado pouco antes de libertar o objeto do controlador da memória. Usado para limpar recursos, cancelar notificações, etc.

Pontos importantes:

  • Os métodos loadView, viewDidLoad, viewDidAppear, viewWillDisappear, viewDidDisappear, deinit são chamados uma única vez no ciclo de vida do objeto do controlador.
  • Os métodos viewWillAppear e viewDidAppear podem ser chamados várias vezes, por exemplo, ao navegar para frente e para trás.

Exemplo de sequência de chamadas ao criar e mostrar um controlador:

// Inicialização (se for do Storyboard/Nib)
init?(coder aDecoder: NSCoder)

// Ou inicialização (se programática)
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)

// Carregamento da vista
loadView()
viewDidLoad()

// Aparição da vista
viewWillAppear(true)
// ... a vista tornou-se visível ...
viewDidAppear(true)

// Desaparecimento da vista (por exemplo, ao navegar para outro VC)
viewWillDisappear(true)
// ... a vista deixou de ser visível ...
viewDidDisappear(true)

// Libertação de memória (quando já não há referências fortes ao controlador)
deinit