Какие сторонние библиотеки (CocoaPods / SPM) вы использовали в предыдущих iOS-проектах?

«Какие сторонние библиотеки (CocoaPods / SPM) вы использовали в предыдущих iOS-проектах?» — вопрос из категории Other, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В проектах использовал следующие популярные библиотеки для решения стандартных задач:

  • Сеть: Alamofire — удобная абстракция над URLSession для выполнения HTTP-запросов, валидации и обработки ответов.
  • Изображения: Kingfisher или SDWebImage — для асинхронной загрузки, кэширования и обработки изображений (масштабирование, placeholder).
  • Локализация UI: SnapKit / PureLayout — для декларативной верстки интерфейса кодом с помощью readable DSL (альтернатива Auto Layout constraints).
  • Реактивное программирование: RxSwift / Combine (нативный) — для реализации реактивных паттернов (MVVM).
  • Локальная БД: RealmSwift — как альтернатива Core Data.

Почему Alamofire? Она упрощает обработку ошибок, поддерживает цепочки запросов (chaining), интерсепторы для логирования или авторизации, и встроенный Codable support.

Пример использования Alamofire с Codable:

import Alamofire

struct Post: Codable {
    let id: Int
    let title: String
}

AF.request("https://jsonplaceholder.typicode.com/posts/1")
   .validate(statusCode: 200..<300) // Валидация HTTP-статуса
   .validate(contentType: ["application/json"]) // Валидация Content-Type
   .responseDecodable(of: Post.self) { response in
       switch response.result {
       case .success(let post):
           print("Заголовок поста: (post.title)")
       case .failure(let error):
           // Обработка ошибок сети или декодирования
           if let afError = error.asAFError {
               print("AFError: (afError.localizedDescription)")
           }
       }
   }

Тренд: Современные проекты стремятся к минимизации зависимостей, используя SPM и нативные фреймворки (Combine, async/await для сетей).