Ответ
iOS SDK — это набор фреймворков и инструментов для разработки приложений под iOS. Работал со всеми основными слоями архитектуры.
Основные фреймворки и их применение:
1. UIKit — построение интерфейсов
// Программное создание UI
let label = UILabel()
label.text = "Hello"
label.textColor = .systemBlue
label.font = .systemFont(ofSize: 16, weight: .medium)
view.addSubview(label)
// Анимации
UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseInOut) {
label.alpha = 0.5
label.transform = CGAffineTransform(scaleX: 1.1, y: 1.1)
} completion: { _ in
// Завершение анимации
}
2. Foundation — базовые типы и утилиты
// Работа с данными
let data = Data()
let json = try JSONSerialization.jsonObject(with: data)
let url = URL(string: "https://api.example.com")!
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
3. Сетевое взаимодействие (URLSession)
struct NetworkManager {
func fetch<T: Decodable>(from endpoint: URL) async throws -> T {
let (data, response) = try await URLSession.shared.data(from: endpoint)
guard let httpResponse = response as? HTTPURLResponse,
(200...299).contains(httpResponse.statusCode) else {
throw URLError(.badServerResponse)
}
return try JSONDecoder().decode(T.self, from: data)
}
}
// Использование с async/await
do {
let user: User = try await NetworkManager().fetch(from: userURL)
print("Пользователь: (user.name)")
} catch {
print("Ошибка: (error)")
}
4. Многопоточность (GCD, OperationQueue)
// Grand Central Dispatch
DispatchQueue.global(qos: .userInitiated).async {
// Фоновая задача
let result = performHeavyCalculation()
DispatchQueue.main.async {
// Обновление UI
updateUI(with: result)
}
}
// OperationQueue для зависимых задач
let queue = OperationQueue()
queue.maxConcurrentOperationCount = 2
let downloadOp = BlockOperation { downloadData() }
let processOp = BlockOperation { processData() }
let saveOp = BlockOperation { saveToDatabase() }
processOp.addDependency(downloadOp)
saveOp.addDependency(processOp)
queue.addOperations([downloadOp, processOp, saveOp], waitUntilFinished: false)
5. Хранение данных
- Core Data — для сложных relational данных
- UserDefaults — для простых настроек
- Keychain — для чувствительных данных
- FileManager — для работы с файловой системой
6. Специализированные фреймворки:
- Core Location — геолокация и геофенсинг
- AVFoundation — аудио/видео воспроизведение и запись
- Core Animation — продвинутые анимации
- Core Graphics — рисование и работа с изображениями
- StoreKit — покупки в приложении
7. SwiftUI (iOS 13+)
struct ContentView: View {
@State private var count = 0
var body: some View {
VStack {
Text("Счётчик: (count)")
.font(.title)
Button("Увеличить") {
count += 1
}
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(8)
}
}
}
Архитектурные подходы:
- MVC — традиционный для UIKit
- MVVM — с биндингами (Combine/RxSwift)
- VIPER/Clean Architecture — для больших проектов
- Redux-like — для управления состоянием
Инструменты разработки:
- Xcode — основная IDE
- Instruments — профилирование
- Swift Package Manager/CocoaPods/Carthage — управление зависимостями
- Fastlane — автоматизация сборки и деплоя