Вступить в клуб →
сложнаявопросПроизводительность и Instruments

Таймер обратного отсчёта перерисовывает весь экран каталога раз в секунду

final class CatalogStore: ObservableObject {
    @Published var products: [Product] = []   // 500 товаров
    @Published var saleSecondsLeft = 3600      // меняется каждую секунду
}

struct CatalogScreen: View {
    @ObservedObject var store: CatalogStore
    var body: some View {
        VStack {
            SaleBanner(seconds: store.saleSecondsLeft)
            ProductGrid(products: store.products)
        }
    }
}

Instruments показывает, что body экрана и сетки пересчитываются каждую секунду. Минимальная версия — iOS 17. Какое решение точнее всего?

  • Перейти на @Observable: учёт чтения свойств
  • Обновлять таймер раз в 5 секунд
  • Сделать ProductGrid классом, а не структурой
  • Обернуть сетку в LazyVStack

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела