Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Что такое retain count и как система решает, когда освобождать объект?
Retain count — это количество сильных ссылок на объект. Пока retain count больше нуля, объект живёт в памяти. Когда число сильных ссылок становится равным нулю, объект освобождается. В Swift этим процессом автоматически управляет ARC, добавляя и убирая retain и release на этапе компиляции.
Как возникают retain cycle и как их находить?
Retain cycle возникает, когда два или более объекта удерживают друг друга сильными ссылками. В результате retain count никогда не становится равным нулю. Такие объекты не освобождаются, и возникает утечка памяти. Чаще всего retain cycle появляются в замыканиях, делегатах и взаимных ссылках между объектами.
В чем разница между alloc/init и retain/release в Objective-C?
alloc/init отвечает за создание объекта и начальное владение им. retain/release управляют временем жизни уже созданного объекта. В ARC эти вызовы вставляются автоматически компилятором. Понимание разницы важно для работы с legacy-кодом и анализа утечек.
Что такое retain cycle и как его избежать?
Retain cycle возникает, когда два или более объекта удерживают друг друга сильными ссылками. В результате ARC не может освободить память. Чаще всего это происходит между view controller и замыканиями или делегатами. Для решения используют weak или unowned ссылки. Важно осознанно управлять владением объектами.
Какие ключевые слова используются для разрыва retain cycle?
Для разрыва retain cycle в Swift используются ключевые слова weak и unowned. Они позволяют ссылке не увеличивать счетчик сильных ссылок объекта. weak используется, когда объект может быть освобожден раньше. unowned — когда гарантируется, что объект живет дольше. Правильный выбор зависит от жизненного цикла объектов.
Почему ARC не может автоматически устранять retain cycle?
Как решается проблема retain cycle между View и Presenter?
Рейтинг:
5
Сложность:
7
ARC работает только с количеством ссылок, а не с логикой связей. Он не анализирует граф объектов целиком. Для ARC retain cycle выглядит как корректное состояние. Автоматическое разрывание таких связей могло бы привести к ошибкам. Поэтому ответственность за это лежит на разработчике.
Рейтинг:
5
Сложность:
5
Проблема retain cycle решается использованием слабой ссылки (weak) со стороны Presenter на View. View продолжает хранить Presenter сильной ссылкой. Такая схема разрывает цикл владения. В результате оба объекта корректно освобождаются. Это стандартная практика в VIPER.
Рейтинг:
5
Сложность:
7
Рейтинг:
5
Сложность:
9
Рейтинг:
4
Сложность:
7
Рейтинг:
5
Сложность:
7
Рейтинг:
5
Сложность:
5