Je inštancia pohľadu vytvorená okamžite po vytvorení kontroléra?
sobes.tech AI
Odpoveď od AI
Nie. Príklad pohľadu (view) pre kontrolér typu UIViewController sa vytvára lenivo, pri prvom prístupe k vlastnosti view.
UIKit nevytvára pohľad okamžite po inicializácii kontroléra na optimalizáciu zdrojov. Pohľad môže byť vizuálne zložitý a vyžadovať veľa pamäte a CPU času na jeho vytvorenie. Vytváraním ho "lenivo", iba keď je naozaj potrebný na zobrazenie na obrazovke, systém šetrí zdroje.
Tento proces sa deje napríklad, keď je kontrolér pridaný do hierarchie pohľadov iného kontroléra alebo okna, alebo keď je explicitne volaná jeho vlastnosť view. Ak je kontrolér inicializovaný, ale nikdy nie je zobrazený alebo použitý, jeho pohľad nebude vytvorený.
Životný cyklus kontroléra a tvorba pohľadu zahŕňa nasledujúce kľúčové body:
init(coder:)aleboinit(nibName:bundle:): Kontrolér je inicializovaný, aleviewje eštenil.- Prvýkrát, keď sa pristupuje k
view: Ak jeviewnil, systém zavolá metóduloadView(). loadView(): V tejto metóde vy (alebo systém podľa predvoleného nastavenia) vytvoríte koreňový pohľad kontroléra a priradíte ho vlastnostiview.viewDidLoad(): Táto metóda sa volá po načítaní pohľadu a priradení k vlastnostiview. Tu zvyčajne prebieha konfigurácia podpohľadov, načítanie dát a iné akcie závislé od prítomnosti pohľadu.
Príklad prepísania loadView():
override func loadView() {
// Namiesto načítania z Storyboard/XIB alebo vytvárania prázdneho UIView
// vytvárame náš vlastný prispôsobený pohľad
let customView = CustomContentView()
view = customView
// Tu už view nie je `nil`
}
Je dôležité si zapamätať, že vo väčšine prípadov nebudete priamo prepísať loadView(), ale budete sa spoliehať na štandardnú implementáciu UIKit, ktorá načítava pohľad zo Storyboardu, XIB súboru alebo vytvára predvolene prázdny UIView. Avšak, pochopenie, kedy a ako sa pohľad vytvára, je kľúčové.