Жизненный цикл ViewController | SWIFT

Sdílet
Vložit
  • čas přidán 2. 08. 2024
  • 00:00 Вступление
    00:00 Методы жизненного цикла vc
    00:55 init
    01:19 loadView
    01:33 viewDidLoad
    02:05 viewWillAppear
    02:28 viewWillLayoutSubviews
    02:43 viewDidLayoutSubviews
    03:03 viewDidAppear
    03:24 viewWillDisappear
    04:04 viewDidDisappear
    04:55 deinit
    05:09 Промежуточные итоги
    07:41 Демо
    13:00 Выводы
  • Věda a technologie

Komentáře • 34

  • @card1nal312
    @card1nal312 Před rokem +1

    Именно то, что искал! Спасибо тебе большое за твой труд! Очень подробное и детальное объяснение темы! Ценю! ✊🏻😊

  • @user-iOSnick-dev
    @user-iOSnick-dev Před 9 měsíci

    Большое спасибо за труд!!!

  • @valentinalinchuk
    @valentinalinchuk Před rokem

    Эти видео - лучшие!

  • @boekhounding2586
    @boekhounding2586 Před 7 měsíci

    Автор, большая умница! Спасибо!

  • @gabibli
    @gabibli Před 4 měsíci

    Божественно

  • @MarkizBoneco
    @MarkizBoneco Před 7 měsíci

    отличное объяснение. спасибо большое!

  • @user-uh1uw5kj3x
    @user-uh1uw5kj3x Před 11 měsíci

    Спасибо большое, очень помогло данное видео

  • @user-nt6cg5un5e
    @user-nt6cg5un5e Před rokem

    Лучшее пояснение на данную тему 🆒

  • @MetaFishing
    @MetaFishing Před 4 měsíci

    Супер! Спасибо

  • @user-ww1ur8ww8r
    @user-ww1ur8ww8r Před 3 měsíci

    Спасибо большое!!!

  • @Platss
    @Platss Před 10 měsíci

    Жаль 2 лайка нельзя поставить)
    Лучший на ютубе

  • @YA_BEDA
    @YA_BEDA Před 8 měsíci

    Спасибо большое за прекрасное видео! Если в планах выпускать еще?)

  • @denok137
    @denok137 Před rokem +1

    хороший видос)
    только viewDidLoad может вызваться не один раз
    и да верстают же еще и на фреймах, и делают это позже него

    • @MagicSwift
      @MagicSwift  Před rokem +2

      Ты прав, спасибо за уточнение. Действительно, хотя обычно viewDidLoad() вызывается только один раз в жизненном цикле контроллера, существуют редкие случаи, когда это может произойти снова. Например, при получении системного предупреждения об недостатке памяти система может сделать это или при использовании вьюконтроллера снова, когда вью выгружается и повторно загружается. В этих и других исключительных ситуациях может возникнуть необходимость в повторном выполнении инициализации и настройки вью. В целом, это редкое поведение, но оно имеет место быть.

  • @windyaroa6524
    @windyaroa6524 Před rokem

    Ты умеешь удивить

  • @fedy_2358
    @fedy_2358 Před rokem +2

    deinit вызывается перед деаллокацией а не после 5:00

  • @artyom5602
    @artyom5602 Před 6 měsíci

    Жаль не успели рассказать про новый метод isappearing

  • @hashcat5721
    @hashcat5721 Před rokem +1

    если что то принтануть можно так print(\(#function) - \(Self.self))

  • @alexsandershishkin8664

    кайф! будет еще?

  • @dobrysiabar8791
    @dobrysiabar8791 Před 9 měsíci +1

    5:55 "в методе loadView корневая view равна nil и мы можем подменить её на нашу кастомную". А в каком моменте дефолтный view становится не nil, если ничего не подменять и ничего не трогать? В методе viewDidLoad? Ну если так, то какой смысл подменять на кастомную view, если она почти сразу же перезапишется на дефолтную view от apple, так как это заложено жизненным циклом? Зачем тогда что-то подменять?
    Ну либо подменять view нужно в методе viewDidLoad, а не loadView, как говорит автор?
    Тема не раскрыта целиком и собеседующий просто завалит наводящими вопросами. На собеседовании такие поверхностные ответы не прокатят

    • @dobrysiabar8791
      @dobrysiabar8791 Před 9 měsíci +1

      Разобрался самостоятельно. Если в методе loadView не вызвать super, то view не настроится и будет nil, а view controller будет метаться и вызывать метод loadView несколько раз. А если еще попытаться обратиться ко view, то программа начинает сходить с ума и вызывать метод loadView бесконечно.
      Поведение view controller'а очень странное если у view нет значения. Если не трогать свойство view, то view controller как-то умудряется жить и вызывать другие методы своего жизненного цикла. Но если хоть где-то дёрнуть свойство view, то это конец работе программы.

  • @anemesis9635
    @anemesis9635 Před rokem

    а почему layoutSubviews не входит в цикл?

    • @anemesis9635
      @anemesis9635 Před rokem

      и по-моему, не совсем правильно обобщать и говорить, что viewDidLoad используется для верстки UI. для проставления констрейнтов - да, но ведь ручной подсчет фреймов нужно делать где-то в районе layoutSubviews. поправьте, если я не прав.

    • @MagicSwift
      @MagicSwift  Před rokem +5

      @@anemesis9635 layoutSubviews является часть жизненного цикла view, но не viewController’a.
      В контексте vc этот метод вызывается для вью, которые управляются контроллером, а не для него самого. Поэтому хоть этот метод и важен для расположения вью, он не имеет прямого отношения в жизненному циклу вью контроллера

    • @anemesis9635
      @anemesis9635 Před rokem

      @@MagicSwift спасибо большое!

    • @dobrysiabar8791
      @dobrysiabar8791 Před 9 měsíci

      @@anemesis9635 согласен полностью по поводу замечания касательно "верстки UI". Сам автор потом говорит про другие методы, что размеры для subviews еще не просчитаны. О какой вёрстке UI тогда может идти речь?

  • @dobrysiabar8791
    @dobrysiabar8791 Před 9 měsíci

    0:30 на картинке вообще 4 метода, а не 6

  • @user-gb2fs3tw6e
    @user-gb2fs3tw6e Před rokem +1

    viewIsAppearing - новый метод. Между viewWillAppear и viewDidAppear

    • @dobrysiabar8791
      @dobrysiabar8791 Před 8 měsíci

      Ты смог разобраться для чего он нужен, если у нас есть viewDidLayoutSubviews? Я вот пока что не понимаю