📱SwiftUI + SharePlay: смотри видео вместе с друзьямиОчень интересно и скорее всего вообще никому не пригодится. Обожаю эти фичи, которые мы видим на WWDC и больше никогда не используем в реальной жизни. SharePlay одна из таких фичей, возможно кто-то из вас нашел ей применение? В статье рассказано как с помощью
Group Activities и AVFoundation сделать в iOS-приложении возможность смотреть видео синхронно на нескольких устройствах.Что нужно сделать:
GroupActivity, описать метаданные (URL, noscript и т.д.).prepareForActivation() → activate(), либо локально воспроизвести.API очень удобный и интуитивный. Кто-то считает это может стать однажды популярным или уже придумал для чего использовать?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Как с помощью 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