Sobes.tech
Middle

Реци ми о животном циклусу Vue контролера.

sobes.tech АИ

Одговор од АИ

Циклус живота на контролер типа UIViewController у iOS представља низ догађаја који се дешавају од његовог креирања до уништења. Главне фазе:

  1. Инициализација:
    • init?(coder aDecoder: NSCoder): Инициализација из Storyboard/Nib.
    • init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?): Инициализација из Nib фајла или програмски без Nib.
    • loadView(): Учитавање или креирање кореновог приказа контролера. Ако се користи Storyboard/Nib, позива се аутоматски. Кодом креирање приказа захтева преоптерећење.
  2. Учитавање приказа:
    • viewDidLoad(): Позива се након учитавања приказа контролера у меморију. Погодно за почетна подешавања која не захтевају приступ геометријама.
  3. Показа приказа:
    • viewWillAppear(_ animated: Bool): Тачно пре него што приказ контролера постане видљив. Погодно за ажурирање података.
    • viewDidAppear(_ animated: Bool): Позива се након што приказ постане видљив. Погодно за покретање анимација или других задатака који треба да се изврше након потпуног приказа.
  4. Потврда приказа:
    • viewWillDisappear(_ animated: Bool): Тачно пре него што приказ контролера постане невидљив. Погодно за чување стања или прекид активности.
    • viewDidDisappear(_ animated: Bool): Позива се након што приказ постане невидљив. Погодно за ослобађање ресурса или заустављање процеса који нису потребни у позадини.
  5. Промене распореда:
    • viewWillLayoutSubviews(): Позива се пре него што прикази контролера промене своје величине.
    • viewDidLayoutSubviews(): Позива се након што прикази контролера промене своје величине. Погодно за финалну подешавање величина и позиција елемената.
  6. Промене у Trait Collection:
    • traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?): Позива се при промени карактеристика окружења, као што су величина класе, густина екрана, светли/тамни режим итд.
  7. Освобођење меморије:
    • deinit: Позива се тачно пре ослобађања објекта контролера из меморије. Користи се за чишћење ресурса, отказивање пријава итд.

Важне тачке:

  • Методи loadView, viewDidLoad, viewDidAppear, viewWillDisappear, viewDidDisappear, deinit позивају се једном у животном циклусу објекта контролера.
  • Методи viewWillAppear и viewDidAppear могу се позивати више пута, на пример, при навигацији напред и назад.

Пример последователности позива:

// Инициализација (ако из Storyboard/Nib)
init?(coder aDecoder: NSCoder)

// Или инициализација (ако програмски)
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)

// Учитавање приказа
loadView()
viewDidLoad()

// Показа приказа
viewWillAppear(true)
// ... приказ постаје видљив ...
viewDidAppear(true)

// Потврда приказа (нпр. при преласку на други VC)
viewWillDisappear(true)
// ... приказ постаје невидљив ...
viewDidDisappear(true)

// Ослобађање меморије (када нема јаке везе са контролером)
deinit