Wordt er direct na het maken van de controller een instantie van de view gemaakt?
sobes.tech AI
Antwoord van AI
Nee. Het exemplaar van de view voor een UIViewController-controller wordt lui gemaakt, bij de eerste keer dat er wordt verwezen naar de eigenschap view.
UIKit maakt de view niet meteen na het initialiseren van de controller om bronnen te optimaliseren. De view kan visueel complex zijn en veel geheugen en CPU-tijd vereisen om te maken. Door het 'lui' te maken, alleen wanneer het echt nodig is voor weergave op het scherm, bespaart het systeem bronnen.
Dit proces gebeurt bijvoorbeeld wanneer de controller wordt toegevoegd aan de hiërarchie van views van een andere controller of venster, of wanneer de eigenschap view expliciet wordt opgeroepen. Als de controller is geïnitialiseerd, maar nooit wordt weergegeven of gebruikt, wordt de view niet gemaakt.
De levenscyclus van de controller en het maken van de view omvatten de volgende kernpunten:
init(coder:)ofinit(nibName:bundle:): De controller wordt geïnitialiseerd, maarviewis nognil.- Eerste keer dat op
viewwordt aangewezen: Alsviewnilis, roept het systeem de methodeloadView()op. loadView(): In deze methode maakt u (of het systeem standaard) de hoofdview van de controller en wijst u deze toe aan de eigenschapview.viewDidLoad(): Deze methode wordt nadat de view is geladen en toegewezen aanviewopgeroepen. Hier wordt meestal de configuratie van subviews gedaan, gegevens geladen en andere acties die afhankelijk zijn van de aanwezigheid van de view.
Voorbeeld van het overschrijven van loadView():
override func loadView() {
// In plaats van laden uit Storyboard/XIB of het maken van een lege UIView
// maken we onze aangepaste view
let customView = CustomContentView()
view = customView
// Hier is view niet meer `nil`
}
Het is belangrijk om te onthouden dat je in de meeste gevallen loadView() niet rechtstreeks overschrijft, maar vertrouwt op de standaardimplementatie van UIKit, die de view laadt uit een Storyboard, XIB-bestand of standaard een lege UIView maakt. Het begrijpen wanneer en hoe de view wordt gemaakt, is echter cruciaal.