Sobes.tech
Middle

Оё пас аз сохтани контролер, намунаи намоишро фавран месозад?

sobes.tech AI

Ҷавоб аз AI

Наъё. Мисоли намуди (view) барои контроллери навъи UIViewController дархостшуда бехатар карда мешавад, вақте ки аввалин бор ба хусусияти view муроҷиат карда мешавад.

UIKit намесозад, ки намуди зоҳириро фавран пас аз оғоз кардани контроллер барои оптимизатсияи захираҳо созад. Намуд метавонад визуалӣ мураккаб бошад ва барои сохтан он ёдгориҳои зиёди хотира ва вақти коркарди CPU талаб кунад. Бо сохтани он "бехатар" танҳо вақте ки воқеан барои намоиш дар экран зарур аст, системаи захираҳоро сарфа мекунад.

Ин раванд, масалан, вақте ки контроллер ба ҳиерархияи намуди дигар контроллер ё тиреза илова карда мешавад, ё вақте ки хусусияти view-и онро ба таври равшан даъват мекунанд. Агар контроллер инициализатсия шуда бошад, аммо ҳеҷ гоҳ намоиш ё истифода нашуда бошад, намуди он сохта намешавад.

Цикли ҳаёти контроллер ва сохтани намуд дар бар мегирад нуқтаҳои калидӣ:

  1. init(coder:) ё init(nibName:bundle:): Контроллер инициализатсия мешавад, аммо view ҳоло nil аст.
  2. Аввалин бор, ки ба view муроҷиат мекунед: Агар view nil бошад, системаи loadView()-ро даъват мекунад.
  3. loadView(): Дар ин метод шумо (ё системаи пешфарзӣ) решаи намуди контроллерро месозед ва онро ба хусусияти view таъин мекунед.
  4. viewDidLoad(): Ин метод пас аз боркунии намуд ва таъин кардани он ба view даъват мешавад. Ин ҷо одатан танзимоти зернамудҳо, боркунии маълумот ва дигар амалҳоро анҷом медиҳанд.

Масалан, дароз кардани loadView():

override func loadView() {
    // Ба ҷои боркунӣ аз Storyboard/XIB ё сохтани UIView холӣ
    // мо намуди махсуси худро месозем
    let customView = CustomContentView()
    view = customView
    // Ин ҷо view аллакай дигар `nil` нест
}

Муҳим аст, ки дар назар дошта бошед, ки дар бисёр ҳолатҳо, шумо мустақиман loadView()-ро дароз намекунед, балки ба иҷрои стандартии UIKit такя мекунед, ки намудро аз Storyboard, XIB ё ба таври пешфарз холӣ UIView-ро месозад. Аммо, фаҳмидани вақте ва чӣ гуна намуд сохта мешавад, муҳим аст.