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:
init(coder:)ouinit(nibName:bundle:): O controlador é inicializado, masviewainda énil.- Primeira vez que se acede a
view: Seviewfornil, o sistema chama o métodoloadView(). loadView(): Neste método você (ou o sistema por padrão) cria a view raiz do controlador e atribui à propriedadeview.viewDidLoad(): Este método é chamado depois de a view ter sido carregada e atribuída à propriedadeview. 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.