Swift
Язык программирования Apple для приложений на iPhone, iPad и Mac: безопасный, быстрый и современный преемник Objective-C.
Swift — язык программирования, который Apple представила в 2014 году для разработки приложений под iOS, iPadOS, macOS, watchOS и tvOS. Он пришел на смену Objective-C, на котором экосистема Apple жила с 1980-х. Swift проектировали так, чтобы целые классы ошибок стали невозможны, а код оставался коротким и быстрым. С 2015 года язык развивается как проект с открытым исходным кодом.
Пример: защита от пустых значений
// Swift
struct Client {
let name: String
let phone: String? // телефона может не быть
}
func notify(_ client: Client) {
guard let phone = client.phone else {
print("У клиента \(client.name) нет телефона")
return
}
sendSMS(to: phone)
}
Знак ? говорит, что значения может не быть. Компилятор не даст использовать phone, пока код явно не проверит его наличие. Ошибка «обращение к пустому значению», одна из самых частых причин падения приложений, в Swift ловится еще при сборке.
Особенности языка
- Статическая типизация с выводом типов — надежность без лишних слов.
- Управление памятью через ARC — автоматический подсчет ссылок, который расставляет компилятор. В отличие от сборки мусора, нет пауз, но нужно следить за циклическими ссылками, иначе возникают утечки памяти.
- Значимые типы и протоколы. Структуры копируются, а не передаются по ссылке, что снижает число неожиданных изменений; протоколы описывают поведение, как интерфейсы в других языках (подробнее о принципе — в термине «Полиморфизм»).
- Современная асинхронность —
async/awaitи защита от гонок между потоками на уровне языка.
Интерфейсы: SwiftUI
С 2019 года Apple развивает SwiftUI — декларативный способ описывать интерфейс, близкий по идее к React: экран описывается как функция от данных, а система сама обновляет то, что изменилось. Старый подход UIKit по-прежнему используется в больших приложениях, и оба часто сочетаются.
Когда выбирают нативную разработку на Swift
- Приложению нужны глубокая работа с камерой, датчиками, Bluetooth (BLE), фоновые задачи.
- Важны максимальная плавность, сложная графика и анимации.
- Нужны новые возможности iOS сразу после их выхода.
Если же приложение — это в основном формы, списки и работа с сервером, часто выбирают кроссплатформенные React Native или Flutter, а на Swift пишут только отдельные модули. Для Android ту же роль, что Swift для iOS, играет Kotlin.