Sobes.tech
Middle

Kas vyksta su UIViewController, kai programa yra sumažinta?

sobes.tech AI

Atsakymas iš AI

Užsukus programai, UIViewController, kuris šiuo metu yra rodomas vartotojui, pereina per šias gyvavimo ciklo stadijas:

  1. viewWillDisappear: Šis metodas kviečiamas prieš tai, kai kontrolerio vaizdas nustos būti matomas. Čia galima išsaugoti UI būseną arba atšaukti operacijas.
  2. viewDidDisappear: Šis metodas kviečiamas po to, kai kontrolerio vaizdas visiškai paslėptas.
  3. applicationWillResignActive: Šis metodas kviečiamas AppDelegate prieš tai, kai programa pereina iš aktyvaus į neaktyvų būseną (pavyzdžiui, skambučio ar minimizavimo metu).
  4. applicationDidEnterBackground: Šis metodas kviečiamas AppDelegate po to, kai programa pereina į foninį režimą. Šiuo būdu programa turi ribotą laiką vykdyti užduotis ir gali būti sustabdyta arba užbaigta sistema. UIViewController tuo metu lieka atmintyje, tačiau jo vaizdas nėra rodomas.

Jei programa lieka fone ir nėra užbaigta sistema, vėlesnio aktyvinimo metu UIViewController pereina atgal į šias stadijas:

  1. applicationWillEnterForeground: Šis metodas kviečiamas AppDelegate prieš tai, kai programa grįžta iš fono į aktyvų būseną.
  2. applicationDidBecomeActive: Šis metodas kviečiamas AppDelegate po to, kai programa vėl tapo aktyvi.
  3. viewWillAppear: Šis metodas kviečiamas prieš tai, kai kontrolerio vaizdas taps matomas. Čia galima atnaujinti UI.
  4. viewDidAppear: Šis metodas kviečiamas po to, kai vaizdas tapo matomas.

Svarbu pažymėti, kad pats UIViewController objektas nėra ištrinamas iš atminties uždarant programą, jei jis nėra aiškiai iškrautas sistemos dėl išteklių trūkumo (tai retai atsitinka ir priklauso nuo daugelio veiksnių). Kontrolerio vaizdas (view) taip pat gali būti iškrautas iš atminties (viewWillUnload, viewDidUnload - metodai buvo pašalinti iOS 6), jei jis šiuo metu nereikalingas ir sistema reikalinga atmintis. Tokiu atveju, kitą kartą pasiekiant view, jis bus sukurtas iš naujo.