У чому різниця між viewDidLoadі viewDidAppear? Який тип ініціалізації чи спеціальний код входить до цих функцій?
наприклад, presentModalViewControllerпрацює лише тоді, коли присутній у, viewDidAppearа не увімкнено viewDidLoad.
У чому різниця між viewDidLoadі viewDidAppear? Який тип ініціалізації чи спеціальний код входить до цих функцій?
наприклад, presentModalViewControllerпрацює лише тоді, коли присутній у, viewDidAppearа не увімкнено viewDidLoad.
Відповіді:
viewDidLoadвикликається рівно один раз, коли контролер перегляду вперше завантажується в пам'ять. Тут ви хочете створити екземпляр будь-яких змінних екземпляра та побудувати будь-які подання, які живуть протягом усього життєвого циклу цього контролера подання. Однак на даний момент вигляду, як правило, ще не видно.
viewDidAppearвикликається, коли вигляд фактично видимий, і може бути викликаний кілька разів протягом життєвого циклу контролера перегляду (наприклад, коли модальний контролер перегляду відхиляється, і вигляд знову стає видимим). Тут ви хочете виконувати будь-які дії з розмітки або робити будь-які креслення в інтерфейсі користувача - наприклад, представляючи контролер модального перегляду. Однак все, що ви тут робите, повинно бути повторюваним. Краще не зберігати речі тут, інакше ви отримаєте витоки пам’яті, якщо не випустите їх, коли подання зникне.
Див .: https://developer.apple.com/documentation/uikit/uiviewcontroller
viewDidLoadправило, це викликається лише один раз і лише один раз, є одна ситуація, коли його можна викликати знову. Зокрема, якщо ви коли-небудь отримаєте a didReceiveMemoryWarning, ваші невидимі перегляди можуть бути звільнені (хоча контролери перегляду недоторкані), і коли ви повернетесь назад, їх viewDidLoadможна буде знову викликати.
didReceiveMemoryWarning. Але я погоджуюсь з тим, що якщо ви використовуєте хороші практики, коли пишете свої viewDidLoad, ви повинні бути добре. Моя єдина думка полягає в тому, що недбале використання ivars та ручне керування пам'яттю однозначно може призвести до витоків viewDidLoad. Люди повинні бути чутливими до didReceiveMemoryWarningсценарію та відповідно програми.
viewDidLoadкоду, який буде просочуватися didReceiveMemoryWarning. Зітхайте.
Простіше кажучи, ви хочете створити будь-які елементи керування або масиви viewDidLoad, де, як viewDidAppearі там, де ви хочете оновити ці елементи управління або масиви.
viewDidLoadвикликається один раз, коли створюється контролер, і viewDidAppearвикликається кожного разу, коли з'являється подання, ну, DID. Отже, скажімо, у вас є модальний погляд, який ви представляєте, коли цей погляд буде відхилено, viewDidAppearбуде викликаний і viewDidLoadне буде викликаний.
viewDidLoadможе бути викликаний більше одного разу . Якщо ваш вигляд, коли він не відображається (у стосі інших подань), вивантажується старішими версіями iOS в умовах недостатньої пам’яті, тоді контролер перегляду автоматично перезавантажує вигляд при необхідності повторного відображення на екрані. У пізніших версіях iOS ви можете допомогти зменшити використання пам'яті, виконавши те, що раніше робив для вас iOS: вивантажуйте позаекранні подання, коли didReceiveMemoryWarningнадходить повідомлення, і в цьому випадку viewDidLoadбуде викликано знову.