Sobes.tech
Middle

A instância da visualização é criada imediatamente após a criação do controlador?

sobes.tech IA

Resposta da IA

Não. A instância de view para um controlador do tipo UIViewController é criada de forma preguiçosa, na primeira vez que se acede à propriedade view.

O UIKit não cria a view imediatamente após a inicialização do controlador para otimizar recursos. A view pode ser visualmente complexa e requerer muita memória e tempo de CPU para ser criada. Ao criá-la de forma "preguiçosa", apenas quando realmente é necessária para exibição na tela, o sistema poupa recursos.

Este processo ocorre, por exemplo, quando o controlador é adicionado à hierarquia de views de outro controlador ou janela, ou quando a sua propriedade view é explicitamente chamada. Se o controlador estiver inicializado, mas nunca for exibido ou utilizado, a sua view não será criada.

O ciclo de vida do controlador e a criação da view incluem os seguintes pontos-chave:

  1. init(coder:) ou init(nibName:bundle:): O controlador é inicializado, mas view ainda é nil.
  2. Primeira vez que se acede a view: Se view for nil, o sistema chama o método loadView().
  3. loadView(): Neste método você (ou o sistema por padrão) cria a view raiz do controlador e atribui à propriedade view.
  4. viewDidLoad(): Este método é chamado depois de a view ter sido carregada e atribuída à propriedade view. Aqui geralmente ocorre a configuração de subviews, carregamento de dados e outras ações que dependem da existência da view.

Exemplo de sobrescrita de loadView():

override func loadView() {
    // Em vez de carregar a partir de Storyboard/XIB ou criar um UIView vazio
    // criamos a nossa view personalizada
    let customView = CustomContentView()
    view = customView
    // Aqui, view já não é nil
}

É importante lembrar que, na maioria dos casos, você não sobrescreverá loadView() diretamente, mas confiará na implementação padrão do UIKit, que carrega a view a partir de um Storyboard, um arquivo XIB ou cria um UIView vazio por padrão. No entanto, entender quando e como a view é criada é fundamental.