tgoop.com/mobileproglib/6524
Create:
Last Update:
Last Update:
Структуры в Swift легковесны и быстры, но их неправильное применение бьет по производительности. Разбираем главные ошибки.
Структуры — типы значений. При передаче или присваивании создается копия:
struct UserProfile {
let name: String
let bio: String
let posts: [Post] // Большой массив
let followers: [Follower]
let following: [Following]
}Обновление
bio вынудит скопировать все массивы, даже если меняем одно поле.Решение: Выносим тяжёлые данные в класс:
final class UserDataStore {
var posts: [Post] = []
var followers: [Follower] = []
var following: [Following] = []
}
struct UserProfile {
let name: String
var bio: String
let store: UserDataStore // Общая ссылка
}Теперь копируются только
name и bio, а массивы используются совместно.Для стандартных типов (
String, Array, Dictionary) Swift применяет оптимизацию Copy-on-Write: физическое копирование происходит только при изменении.Пишите в структуры сколько угодно
[String], [Int] и т.д. — пока не меняете их, копирования не будет.Структуры не разделяют состояние:
struct Counter { var count = 0 }
var a = Counter()
var b = a
a.count += 1
print(b.count) // 0, а не 1Для общего состояния нужен класс.
Итог:
Правильное использование структур сохранит скорость и безопасность вашего кода.
🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#буст #MiddlePath #Swift
