Da li se instanca prikaza kreira odmah nakon kreiranja kontrolera?
sobes.tech АИ
Одговор од АИ
Ne. Primerak prikaza (view) za kontroler tipa UIViewController se kreira lenjo, pri prvom pristupu svojstvu view.
UIKit ne kreira prikaz odmah nakon inicijalizacije kontrolera radi optimizacije resursa. Prikaz može biti vizuelno složen i zahtevati mnogo memorije i CPU vremena za kreiranje. Kreiranjem ga "lenjo", samo kada je zaista potrebno za prikaz na ekranu, sistem štedi resurse.
Ovaj proces se dešava, na primer, kada je kontroler dodat u hijerarhiju prikaza drugog kontrolera ili prozora, ili kada se eksplicitno pozove njegovo svojstvo view. Ako je kontroler inicijalizovan, ali nikada ne bude prikazan ili korišćen, njegov prikaz neće biti kreiran.
Ciklus života kontrolera i kreiranje prikaza uključuju sledeće ključne tačke:
init(coder:)iliinit(nibName:bundle:): Kontroler je inicijalizovan, aliviewje još uveknil.- Prvi put kada se pristupi
view: Ako jeviewnil, sistem poziva metoduloadView(). loadView(): U ovoj metodi vi (ili sistem po default-u) kreirate korenski prikaz kontrolera i dodeljujete ga svojstvuview.viewDidLoad(): Ovaj metod se poziva nakon što je prikaz učitan i dodeljen svojstvuview. Ovde se obično vrši konfiguracija podprikaza, učitavanje podataka i druge radnje koje zavise od prisustva prikaza.
Primer prepisivanja loadView():
override func loadView() {
// Umesto učitavanja iz Storyboard/XIB ili pravljenja praznog UIView
// pravimo naš prilagođeni prikaz
let customView = CustomContentView()
view = customView
// Ovde view više nije `nil`
}
Važno je zapamtiti da u većini slučajeva nećete direktno prepisivati loadView(), već ćete se osloniti na standardnu implementaciju UIKit-a, koja učitava prikaz iz Storyboard-a, XIB fajla ili kreira prazan UIView po default-u. Međutim, razumevanje kada i kako se kreira prikaz je ključno.