Как с помощью MetricKit можно собирать реальные метрики от пользователей: загрузка CPU/памяти, I/O, время запуска, энергопотребление, крэши, hangs и многое другое.
Преимущества:
Что нужно сделать:
MetricKit.MXMetricManager.А если хотите пойти дальше, добро пожаловать предлагаю посмотреть мой доклад на эту тему:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3
Работа с async/await и Task в Swift сильно упрощает асинхронный код, но ARC всё ещё делает своё — задачи захватывают объекты, которые используются внутри тела, и могут неявно удерживать память дольше, чем вы думаете. Это может привести к retain-циклам даже без UIKit-замыканий.
Что происходит под капотом:
Task { … }, Swift сильно удерживает все объекты, на которые ссылается тело задачи. Это стандартное поведение ARC: задачи держат захваченные значения до завершения. Owner → task → OwnerКогда это становится проблемой
Как избежать retain-циклов?
weak self в задачахtask = Task { [weak self] in
guard let self else { return }
await self.loadData()
}Если ваша задача запущена на View и должна завершиться при исчезновении UI — отменяйте её вручную:
task.cancel(). Task отменяется, и память освобождается быстрееPlease open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🤔1
В новой лекции разбираются фундаментальные принципы работы SwiftUI через призму архитектуры модели и системы типов Swift — то, что определяет устойчивость и масштабируемость iOS-приложений.
Перемешивание UI и логики. Во многих SwiftUI-проектах View начинает обрастать обязанностями: хранением данных, обработкой логики, сетевыми вызовами. Это приводит к:
Чёткое разделение Model ↔️ View
Связка Model и UI — центральная концепция лекции. SwiftUI ожидает, что:
Это делает приложение устойчивым к изменениям и легко тестируемым.
Swift Type System как фундамент архитектуры. Лекция подчёркивает важность системы типов Swift:
MVVM как естественный путь
CS193p фактически показывает MVVM-подход, но без перегибов:
@Observable / @StateObject.Выводы:
#cs193p
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1