iOS Broadcast
3.4K subscribers
1.76K photos
85 videos
996 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
🐥 Как Swift Runtime влияет на производительность iOS-приложений
Я помогаю с подготовками статей и это официально самая сложная из них, как в плане материала, так и по доработке подачи. Постарался помочь найти баланс между хардкором и капитаном очевидностью. Комментариев не много, так что либо все понятно, либо вообще ничего не понятно.
Суть рассказа - метод swift_conformsToProtocolMaybeInstantiateSuperclasses который значительно замедляет запуск приложения, а используется повсеместно - as?, as!, String(describing:) и String(reflecting:).
🟢Начинать оптимизацию приложения стоит с более простых вещей
🟢Советы из статьи помогут уменьшить негативное влияния Swift Runtime
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍4🤔1
🐥 Отмена асинхронных задач в SwiftUI
Неустаревающая классика, ручное и автоматическое завершение задач в Swift, сколько провожу собесы, столько разработчики валятся на этом вопросе. Если с NSOperations и GCD еще были нюансы, то в Swift Concurrency, мне казалось, все очевидно. База:
🟢SwiftUI привязывает задачи к жизненному циклу View, что часто приводит к автоматической отмене.
🟢В некоторых случаях может потребоваться явный контроль или запрет отмены.

Использование модификатора .task
🟢Модификатор .task запускается при появлении View и отменяется при его исчезновении.
🟢Пример 1: загрузка элементов при появлении ContentView.

Повторение работы с модификатором .task(id:)
🟢Модификатор .task(id:) запускается при появлении представления и повторяется при изменении идентификатора.
🟢Пример 2: обработка поиска или фильтрации в SearchView.

Проверка отмены в коде
🟢Для длительных циклов или множественных ожиданий полезно явно проверять наличие отмены с помощью try или Task.checkCancellation().
🟢Пример 3: загрузка элементов с проверкой отмены.

Долгоживущие задачи
🟢Задачи, не привязанные к представлению, не отменяются автоматически.
🟢Пример 4: загрузка данных в общий кэш в DataService.

Ручная отмена задач
🟢Можно сохранить ссылку на задачу и вызвать task.cancel() для ручной отмены.
🟢Пример 5: отмена загрузки данных при выходе из системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👋 Как мы использовали макросы для внедрения MVVM
Не смог удержаться и не разбавить статью из техблога duolingo мемами про сам duolingo. У кого еще есть любимые мемы про сову, кидайте в комменты

Рост команды и кодовой базы
🔵Команда инженеров iOS значительно выросла за последние несколько лет.
🔵Размер кодовой базы также значительно увеличился.
🔵Команда Client Architecture стандартизировала код на основе MVVM.
🔵Это повысило согласованность кода и скорость разработки.

Использование макросов Swift
🔵Макросы генерируют новый код во время компиляции, оперируя с AST
🔵Они позволяют сократить количество шаблонов и сохранить ясность кода
🔵Макросы используют расширения Key для сбора контекста
🔵Пример: автоматическое создание реализации KeyValueDataSource
🟢Макросы экономят время и снижают вероятность ошибок
🔴Недостатки: код недоступен для поиска в Xcode, иногда требуется перестраивать пакет
🔴Добавление макросов увеличило время сборки
🟢Решение: выгрузка бинарника в S3

Результаты
🟢В базе кода iOS более 4300 строк сгенерированного макросами кода
🟢Макросы упрощают разработку и улучшают качество кода
🟢Макросы используются для автоматической генерации протоколов и инициализаторов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥1