MOBILEPROGLIB Telegram 6524
🤫 Не используйте Struct в Swift таким образом — это вас замедляет

Структуры в Swift легковесны и быстры, но их неправильное применение бьет по производительности. Разбираем главные ошибки.

1️⃣ Копирование больших данных

Структуры — типы значений. При передаче или присваивании создается копия:

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, а массивы используются совместно.

2️⃣ Copy-on-Write — ваше спасение

Для стандартных типов (String, Array, Dictionary) Swift применяет оптимизацию Copy-on-Write: физическое копирование происходит только при изменении.

Пишите в структуры сколько угодно [String], [Int] и т.д. — пока не меняете их, копирования не будет.

3️⃣ Не ожидайте общего состояния

Структуры не разделяют состояние:

struct Counter { var count = 0 }

var a = Counter()
var b = a
a.count += 1
print(b.count) // 0, а не 1


Для общего состояния нужен класс.

Итог:

🔘 Дробите тяжёлые структуры, выносите данные в классы.
🔘 Доверяйте COW для стандартных типов.
🔘 Не путайте value- и reference-семантику.

Правильное использование структур сохранит скорость и безопасность вашего кода.

🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека мобильного разработчика

#буст #MiddlePath #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
3



tgoop.com/mobileproglib/6524
Create:
Last Update:

🤫 Не используйте Struct в Swift таким образом — это вас замедляет

Структуры в Swift легковесны и быстры, но их неправильное применение бьет по производительности. Разбираем главные ошибки.

1️⃣ Копирование больших данных

Структуры — типы значений. При передаче или присваивании создается копия:

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, а массивы используются совместно.

2️⃣ Copy-on-Write — ваше спасение

Для стандартных типов (String, Array, Dictionary) Swift применяет оптимизацию Copy-on-Write: физическое копирование происходит только при изменении.

Пишите в структуры сколько угодно [String], [Int] и т.д. — пока не меняете их, копирования не будет.

3️⃣ Не ожидайте общего состояния

Структуры не разделяют состояние:

struct Counter { var count = 0 }

var a = Counter()
var b = a
a.count += 1
print(b.count) // 0, а не 1


Для общего состояния нужен класс.

Итог:

🔘 Дробите тяжёлые структуры, выносите данные в классы.
🔘 Доверяйте COW для стандартных типов.
🔘 Не путайте value- и reference-семантику.

Правильное использование структур сохранит скорость и безопасность вашего кода.

🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека мобильного разработчика

#буст #MiddlePath #Swift

BY Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck


Share with your friend now:
tgoop.com/mobileproglib/6524

View MORE
Open in Telegram


Telegram News

Date: |

Hui said the time period and nature of some offences “overlapped” and thus their prison terms could be served concurrently. The judge ordered Ng to be jailed for a total of six years and six months. Telegram message that reads: "Bear Market Screaming Therapy Group. You are only allowed to send screaming voice notes. Everything else = BAN. Text pics, videos, stickers, gif = BAN. Anything other than screaming = BAN. You think you are smart = BAN. How to create a business channel on Telegram? (Tutorial) Select “New Channel” The SUCK Channel on Telegram, with a message saying some content has been removed by the police. Photo: Telegram screenshot.
from us


Telegram Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
FROM American