Каковы ключевые различия между Objective-C и Swift?

«Каковы ключевые различия между Objective-C и Swift?» — вопрос из категории Swift Core, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Objective-C — это динамический, объектно-ориентированный язык на основе C с синтаксисом в стиле Smalltalk. Swift — это современный, статически типизированный, мультипарадигмальный язык, разработанный Apple.

Основные различия:

Критерий Objective-C Swift
Синтаксис Громоздкий, с квадратными скобками для сообщений. Чистый, лаконичный, похожий на современные языки.
Безопасность Динамическая типизация, допускает ошибки времени выполнения. Статическая типизация, опционалы, контроль доступа к памяти.
Производительность Медленнее из-за динамической диспетчеризации. Быстрее благодаря статической диспетчеризации и оптимизациям LLVM.
Управление памятью Ручное (MRC) или автоматическое подсчетом ссылок (ARC). Автоматическое (ARC) с сильными, слабыми и бесхозными ссылками.
Интероперабельность Может вызывать C и C++ код напрямую. Может работать с Objective-C через bridging, но не с C++ напрямую.

Пример кода:

// Objective-C
NSString *greeting = @"Hello";
NSLog(@"%@", greeting);
// Swift
let greeting = "Hello"
print(greeting)

Когда что использовать:

  • Swift — для всех новых проектов и основной разработки.
  • Objective-C — для поддержки старого кода или интеграции со специфическими C/C++ библиотеками.