В данной статье мы рассмотрим два ключевых слова, используемых в Swift, это inout и mutating. Inout позволяет модифицировать переданный в функцию аргумент и изменять его значение, в то время как mutating позволяет модифицировать значения свойств внутри структур или перечислений. В статье мы будем рассматривать примеры использования этих концептов и их взаимодействия для улучшения вашей кодовой … Продолжить чтение «Что такое inout и mutating в swift»
Тестовые задания для Junior iOS разработчика
Если вы начинающий iOS разработчик (Junior), то будьте готовы к тому, что вас попросят сделать тестовое задание. Обычно это написание мини приложения или игры (если ваше собеседование на соответствующую позицию). В данной статье собраны тестовые задания от разных компаний на позицию Junior iOS разработчик. Все задания находятся в открытом доступе и не являются сливом реальных … Продолжить чтение «Тестовые задания для Junior iOS разработчика»
Топ 20 вопросов на iOS собеседовании. Уровень Junior
Давайте рассмотрим самые популярные вопросы на собеседовании iOS, которые часто задаются разработчику Junior уровня. К каждому вопросу приведен подробный ответ, но будет плюсом читателю самостоятельно углубиться в каждую из тем, которые рассматриваются в статье. 1. Что такое Retain Cycle? Каким образом исправляется проблема Retain Cycle? Retain Cycle — распространенная проблема, связанная с управлением памяти, когда … Продолжить чтение «Топ 20 вопросов на iOS собеседовании. Уровень Junior»
Уровни доступа в Swift
Корректное использование уровней доступов в Swift способно скрыть детали реализации вашего кода от посторонних глаз от кода в других файлах и модулях. Очень часто именно с этой темы начинается собеседование iOS разработчика. В нашем распоряжении пять уровней доступа: К сожалению, не помню ресурс-источник следующей картинки, но по ней очень легко понять тему контроля доступа: Open … Продолжить чтение «Уровни доступа в Swift»
deinit: как и где вызывается?
deinit — деинициализация. Вызывается перед освобождением экземпляра класса. Деинициализаторы доступны только для классовых типов. Как правило, deinit не вызывается специально, что означает — не нужно вручную чистить память. Swift берет эту роль на себя, работает это при помощи автоматического подсчета ссылок (ARC). В ряде ситуаций, когда память нуждается в ручной очистке, вызывается деинициализатор, например, при … Продолжить чтение «deinit: как и где вызывается?»
Что такое ARC(Automatic Reference Counting)?
Тема про управление памятью — излюбленная тема на собеседовании. В этой статье мы рассмотрим два подхода управления памятью: ARC и MRC. MRC — Manual Reference Counter (ручное управление счетчиком ссылок) Каждый объект содержит некий счетчик, отображающий количество объектов, которые на него ссылаются (ссылки). При равенстве счетчика нулю — объекты освобождаются из памяти. В ситуации, когда объект освобождается, но счетчик ссылок остался не равен нулю, … Продолжить чтение «Что такое ARC(Automatic Reference Counting)?»
Value Type и Reference Type или чем стек отличается от кучи?
Итак, разберемся что такое Value Type и Reference Type и чем стек отличается от кучи. В Swift есть две категории типов: Давайте разделим типы в Swift на две категории: Тип значения Ссылочный тип Int Функции Double Замыкания String Классы Array Dictionary Set Struct Enum Tuple Существует одно важное замечание — если экземпляр типа значения является … Продолжить чтение «Value Type и Reference Type или чем стек отличается от кучи?»
Retain Cycle
Одной из распространенных проблем, связанных с управлением памятью, является проблема Retain Cycle или цикл сильных ссылок. Retain Cycle — когда сущность A обладает сущностью B и наоборот. Утечка памяти происходит, когда содержимое остается в памяти даже после окончания его жизненного цикла. Это случается, когда два объекта имеют strong ссылки друг на друга. В подобном случае Swift просто … Продолжить чтение «Retain Cycle»