Sobes.tech
Middle

Räägi mulle Vue kontrolleri elutsüklist.

sobes.tech AI

Vastus AI-lt

iOS-süsteemis UIViewController tüüpi kontrolleri elutsükkel on sündmuste jada, mis toimub selle loomise ja hävitamise vahel. Peamised etapid:

  1. Initsialiseerimine:
    • init?(coder aDecoder: NSCoder): Initsialiseerimine Storyboard/Nib-ist.
    • init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?): Initsialiseerimine Nib-failist või programmeerides ilma Nib-ita.
    • loadView(): Kontrolleri põhivaate laadimine või loomine. Kui kasutatakse Storyboard/Nib, kutsutakse see automaatselt. Programmeerimisel tuleb üle kirjutada.
  2. Vaate laadimine:
    • viewDidLoad(): Kutsutakse pärast vaate laadimist mällu. Sobib initsialiseerimisseadistuste jaoks, mis ei vaja geomeetriale juurdepääsu.
  3. Vaate ilmumine:
    • viewWillAppear(_ animated: Bool): Kutsutakse otse enne, kui vaade muutub nähtavaks. Sobib andmete uuendamiseks, mis võivad muutuda vaadete vahel.
    • viewDidAppear(_ animated: Bool): Kutsutakse pärast vaate ilmumist. Sobib animatsioonide või muude ülesannete alustamiseks, mis peaksid toimuma ainult pärast täielikku kuvamist.
  4. Vaate kadumine:
    • viewWillDisappear(_ animated: Bool): Kutsutakse otse enne, kui vaade muutub nähtamatuks. Sobib oleku salvestamiseks või tegevuste lõpetamiseks.
    • viewDidDisappear(_ animated: Bool): Kutsutakse pärast vaate kadumist. Sobib ressursside vabastamiseks või protsesside peatamiseks, mis pole taustal vajalikud.
  5. Paigutuse muutused:
    • viewWillLayoutSubviews(): Kutsutakse enne, kui vaadete suurused muutuvad.
    • viewDidLayoutSubviews(): Kutsutakse pärast, kui vaadete suurused on muutunud. Sobib elementide lõplikuks seadistamiseks suuruste ja positsioonide osas.
  6. Traiti kollektsiooni muutused:
    • traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?): Kutsutakse keskkonna omaduste muutmisel, nagu suuruse klass, ekraani tihedus, hele/tume režiim jne.
  7. Mälu vabastamine:
    • deinit: Kutsutakse enne objekti mälust vabastamist. Kasutatakse ressursside puhastamiseks, teavituste tühistamiseks jne.

Olulised punktid:

  • loadView, viewDidLoad, viewDidAppear, viewWillDisappear, viewDidDisappear, deinit kutsutakse üks kord objekti elutsükli jooksul.
  • viewWillAppear ja viewDidAppear võivad kutsuda mitu korda, näiteks navigeerimisel edasi-tagasi.

Näide kutsumisjärjestusest, kui kontroller luuakse ja kuvatakse:

// Initsialiseerimine (kui Storyboard/Nib-st)
init?(coder aDecoder: NSCoder)

// Või initsialiseerimine (kui programmeerides)
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)

// Vaate laadimine
loadView()
viewDidLoad()

// Vaate ilmumine
viewWillAppear(true)
// ... vaade muutus nähtavaks ...
viewDidAppear(true)

// Vaate kadumine (näiteks teise VC-le üleminek)
viewWillDisappear(true)
// ... vaade muutus nähtamatuks ...
viewDidDisappear(true)

// Mälu vabastamine (kui kontrollerile ei ole enam tugevaid viiteid)
deinit