Sobes.tech
Middle

Чӣ мешавад бо UIViewController вақте ки барнома кам мешавад?

sobes.tech AI

Ҷавоб аз AI

Пад час сціскання прыкладання UIViewController, які ў дадзены момант адлюстроўваецца карыстальніку, праходзяць праз наступныя стадыі жыццёвага цыклу:

  1. viewWillDisappear: Метад выклікаецца перад тым, як прадстаўленне кантролера перастане быць відавочным. Тут можна захаваць стан UI або адмяніць аперацыі.
  2. viewDidDisappear: Метад выклікаецца пасля таго, як прадстаўленне кантролера цалкам схаваецца.
  3. applicationWillResignActive: Метад выклікаецца ў AppDelegate перад тым, як прыкладанне пераходзіць з актыўнага стану ў неактыўнае (напрыклад, пры сцісканні або атрымання званка).
  4. applicationDidEnterBackground: Метад выклікаецца ў AppDelegate пасля таго, як прыкладанне перайшло ў фонавы рэжым. У гэтым стане прыкладанне мае абмежаваны час для выканання задач і можа быць прыпынена або завершана сістэмай. UIViewController пры гэтым застаецца ў памяці, але яго прадстаўленне не адлюстроўваецца.

Калі прыкладанне застаецца у фонавым рэжыме і не завершана сістэмай, пры наступным вяртанні ў актыўны стан UIViewController праходзіць зваротныя стадыі:

  1. applicationWillEnterForeground: Метад выклікаецца ў AppDelegate перад тым, як прыкладанне пераходзіць з фонавага рэжыму назад у актыўны стан.
  2. applicationDidBecomeActive: Метад выклікаецца ў AppDelegate пасля таго, як прыкладанне зноў стала актыўным.
  3. viewWillAppear: Метад выклікаецца перад тым, як прадстаўленне кантролера стане відавочным. Тут можна абнавіць UI.
  4. viewDidAppear: Метад выклікаецца пасля таго, як прадстаўленне кантролера стала відавочным.

Варта адзначыць, што сам аб'ект UIViewController не выдаляецца з памяці пры сцісканні, калі ён не быў відавочна выгружаны сістэмай з-за недахопу рэсурсаў (што адбываецца рэдка і залежыць ад многіх фактараў). Прадстаўленне (view) кантролера таксама можа быць выгружана з памяці (viewWillUnload, viewDidUnload - метады былі выдалены ў iOS 6), калі яно не патрабуецца ў дадзены момант і сістэме патрэбна памяць. У гэтым выпадку пры наступным доступе да view яно будзе створана зноў.