UIKit, жизненный цикл UIViewController Точные frame становятся доступны в методе viewDidLayoutSubviews К этому моменту завершён автоматический расчёт компоновки и ограничений В viewDidLoad размеры ещё НЕ…
Чем отличаются weak и unowned в Swift и в каких случаях выбирают unowned? weak — ссылка, которая при уничтожении объекта может стать nil; поэтому она всегда Optional unowned — слабая ссылка без Optional,…
Structured и unstructured concurrency Область применения: управление параллельным выполнением и многозадачностью Structured concurrency: задачи выстроены в иерархию и вложены друг в друга, а их жизненный цикл чётко…
Функция — это именованный или анонимный блок кода, предназначенный для выполнения определённой задачи. Замыкание представляет собой функцию вместе со связанным лексическим контекстом, то есть переменными из внешней…
Архитектурные паттерны построения UI MVP (Model-View-Presenter): View передаёт события Presenter Presenter обрабатывает логику и обновляет View и Model Явное разделение UI и бизнес-логики MVVM (Model-View-ViewModel):…
MVX-паттерны: сходства и различия Определяют архитектуру UI: каждый из них разделяет логику приложения, представление и управление состоянием Разделяют зоны ответственности → благодаря этому код проще поддерживать и…
В жизненном цикле ViewController после вызова viewWillAppear обязательно ли вызывается viewDidAppear? Жизненный цикл VC в iOS UIKit viewWillAppear срабатывает непосредственно перед отображением вида на экране После…
Где в памяти процесса размещаются динамически загружаемые библиотеки? загружаются в адресное пространство процесса размещаются в сегменте dynamic/shared libraries (обычно в области heap/mmap) контролируются…
Зачем в ARC используется механизм side table? Контекст: управление памятью в Objective-C (ARC) Side table представляет собой вспомогательную структуру данных для хранения дополнительной информации об объекте, которую…
Зачем нужны setNeedsLayout и layoutIfNeeded? iOS/UIView: управление перерасчётом компоновки setNeedsLayout: помечает view для перекладки в ближайшем цикле run loop не запускает обновление сразу, а только устанавливает…
Механизм управления памятью Swift для объектов классов Отслеживает число активных ссылок на объект — счетчик ссылок При добавлении ссылки счётчик увеличивается на 1, при её удалении — уменьшается на 1 После достижения…
Responder Chain представляет собой цепочку UI-объектов, через которую в iOS и macOS обрабатываются касания и другие действия пользователя. Её элементы являются объектами UIResponder, например UIView, UIViewController…