Sobes.tech
Middle

Az ellenőrző létrehozása után azonnal létrejön a nézet példánya?

sobes.tech MI

Válasz az MI-től

Nem. A UIViewController típusú vezérlő nézetpéldánya (view) késleltetve jön létre, az első hozzáféréskor a view tulajdonsághoz.

A UIKit nem hozza létre azonnal a nézetet a vezérlő inicializálása után az erőforrások optimalizálása érdekében. A nézet vizuálisan összetett lehet, és sok memóriát, valamint CPU időt igényelhet a létrehozásához. A "lusta" módon történő létrehozásával, csak akkor, amikor valóban szükséges a képernyőn való megjelenítéshez, a rendszer erőforrásokat takarít meg.

Ez a folyamat például akkor történik, amikor a vezérlőt hozzáadják egy másik vezérlő vagy ablak nézethierarchiájához, vagy amikor kifejezetten meghívják a view tulajdonságát. Ha a vezérlőt inicializálják, de soha nem jelenítik meg vagy nem használják, a nézete nem lesz létrehozva.

A vezérlő életciklusa és a nézet létrehozása a következő kulcsfontosságú pontokat foglalja magában:

  1. init(coder:) vagy init(nibName:bundle:): A vezérlő inicializálva van, de a view még nil.
  2. Első hozzáférés a view-hoz: Ha a view nil, a rendszer meghívja a loadView() metódust.
  3. loadView(): Ebben a módszerben ön (vagy az alapértelmezett rendszer) létrehozza a vezérlő gyökérnézetét, és hozzárendeli a view tulajdonsághoz.
  4. viewDidLoad(): Ez a metódus utána hívódik meg, miután a nézet betöltődött és hozzárendelték a view-hoz. Itt általában a beállításokat, az adatok betöltését és más, a nézet meglétéhez kötött műveleteket végzik.

A loadView() felülírásának példája:

override func loadView() {
    // Ahelyett, hogy Storyboard/XIB-ből töltenénk be vagy üres UIView-t hoznánk létre
    // saját egyedi nézetünket hozzuk létre
    let customView = CustomContentView()
    view = customView
    // Itt a view már nem `nil`
}

Fontos megjegyezni, hogy a legtöbb esetben nem fogod közvetlenül felülírni a loadView()-t, hanem a UIKit szabványos működésére fogsz támaszkodni, amely a nézetet egy Storyboard, XIB fájl vagy alapértelmezett üres UIView betöltésével hozza létre. Azonban elengedhetetlen megérteni, mikor és hogyan jön létre a nézet.