Специализация
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 в телеграм
Чем управление памятью в Swift отличается от Objective-C?
И Swift, и Objective-C используют ARC, но в Swift управление памятью более строго типизировано и безопасно. Swift по умолчанию предотвращает многие ошибки, которые были возможны в Objective-C. Также Swift активнее использует value-типы, что меняет характер работы с памятью. В Objective-C больше динамики и меньше проверок на этапе компиляции.
Как ARC взаимодействует с Objective-C кодом?
ARC в Swift и Objective-C — это один и тот же механизм на уровне рантайма. Swift-код и Objective-C-код обмениваются объектами через общий reference counting. Компиляторы обоих языков автоматически вставляют retain и release, согласованные между собой. Благодаря этому объекты корректно живут и освобождаются независимо от языка, в котором они созданы.
В чем разница между alloc/init и retain/release в Objective-C?
alloc/init отвечает за создание объекта и начальное владение им. retain/release управляют временем жизни уже созданного объекта. В ARC эти вызовы вставляются автоматически компилятором. Понимание разницы важно для работы с legacy-кодом и анализа утечек.
Почему UIKit до сих пор частично написан на Objective-C?
UIKit появился задолго до Swift и изначально был написан на Objective-C. Полный переписывание фреймворка слишком рискованно и дорого. Objective-C обеспечивает динамичность, стабильный ABI и тесную интеграцию с рантаймом. Swift поверх UIKit даёт современный синтаксис без ломки экосистемы.
Как устроено взаимодействие Swift-кода с Objective-C рантаймом?
Вопрос проверяет понимание того, как Swift интегрируется в существующую экосистему Objective-C и какие механизмы лежат в основе совместимости.
Какие проблемы могут возникать при смешении Swift и Objective-C в одном проекте?
В каких случаях используется Objective-C message dispatch?
Как уживается Swift Concurrency с Objective-C кодом?
Рейтинг:
5
Сложность:
8
При смешении Swift и Objective-C могут возникать проблемы с памятью, типами и dispatch. Часто появляются неожиданные retain cycle, сложности с nullability и performance-деградация. Также усложняется архитектура и отладка. Эти проблемы требуют дисциплины и чётких границ между слоями.
Рейтинг:
4
Сложность:
6
Objective-C message dispatch используется, когда метод вызывается через механизм отправки сообщений. Решение о том, какой метод вызвать, принимается во время выполнения. Такой подход даёт максимальную гибкость, но работает медленнее, чем vtable. В Swift этот механизм используется при работе с @objc и dynamic. Он необходим для совместимости с Objective-C runtime.
Рейтинг:
4
Сложность:
8
Swift Concurrency может использоваться рядом с Objective-C, но с ограничениями. Objective-C не знает про async/await и actor. Для интеграции используются completion-based API и специальные атрибуты. Swift-код может “оборачивать” Objective-C в async функции. Полной прозрачности нет, но совместное использование возможно и практикуется.
Рейтинг:
4
Сложность:
8
Рейтинг:
5
Сложность:
8
Рейтинг:
4
Сложность:
7
Рейтинг:
5
Сложность:
6
Рейтинг:
5
Сложность:
9