В чем разница между 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функция будет вызываться снова.