iOS Broadcast
3.31K subscribers
1.7K photos
84 videos
973 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
🐥Использование defer в асинхронном контексте
Не знаю почему, но часто разработчики забывают о ключевом слове defer. Он позволяет отложить выполнение блока кода до выхода из текущей области. Такое Откладывание полезно при написании надежного и читабельного кода. Его можно можно и нужно применять и в асинхронном контексте, как рассмотрено в статье:
🟢Пример: метод loadItems в поисковом сервисе, который использует базу данных API и требует закрытия соединения после выполнения операций.
🟢Откладывание позволяет решить проблему дублирования кода и снизить вероятность ошибок.
🟢В асинхронных контекстах, откладывание помогает сгладить код и упростить управление состоянием.
🟢Пример: Itemlist сервис, который использует асинхронные запросы для загрузки элементов и отслеживает состояние загружаемых задач.
🟢Откладывание может быть полезным инструментом для управления состоянием и очистки кода в Swift.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
📱 Сохранение состояния навигации в SwiftUI
Одно из неожиданных преимуществ использования навигации SwiftUI, ее полная интеграция с Codable:
🟣Сохранение состояния навигации улучшает пользовательский опыт при запуске многоэкранных приложений.
🟣SwiftUI позволяет сериализовать навигационный путь, что позволяет сохранять и восстанавливать состояние навигации.
🟣Каждый элемент навигационного пути должен быть хэшируемым и поддающимся кодированию.
🟣Для восстановления навигации декодированный путь восстанавливается и декодируется обратно

Ограничения и рекомендации:
🟡Сохранение состояния навигации полезно, но требует стабильности типов данных и структуры маршрутов
🟡Важно включать только простые и безопасные данные в маршруты для сохранения

От себя ещё добавлю, что любое декодирование маршрута это потенциальная уязвимость и нужно заранее продумать, есть ли маршруты для декодирования которых требуются условия, например декодирование экрана за пейволом 😏
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4
📱 Отлаживаем приложение вместе со SwiftUI Instruments
Отличный гайд от серф студии про практические навыки использования инструментов отладки SwiftUI. Instruments SwiftUI собирает данные о view, view properties, Core Animation Commits, Time Profiler и Hangs.

Использование Core Animation Commits:
🟢Помогает найти дорогие перерисовки UI.
🟢Следить за полями View Body и View Properties

Использование Hangs:
🟢Помогает найти ощутимые фризы
🟢Обращать внимание на длительность и количество зависаний

Итоги:
🟣SwiftUI Instruments помогают лучше понимать SwiftUI.
🟣Можно использовать для проверки подписок и оптимизации кода.
🟣На больших проектах инструменты полезны для рефакторинга и проверки новой логики.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍1
🐥 Использование синглтонов в Swift 6
Каким бы антипаттерном не был синглтон, но про него продолжают писать и спрашивать. Синглтоны вызывают проблемы, портят тестируемость и увеличивают связанность. Предпочтительнее явная передача зависимостей.
Проблемы синглтона:
🟢Swift 6 не любит отправляемые типы и глобальное изменяемое состояние.
🟢 В Swift 6 возникают проблемы с одиночными и совместно используемыми экземплярами
🟢Для устранения ошибок с глобальным изменяемым состоянием можно использовать изоляцию или неизолированные (небезопасные) свойства.
🟢Важно быть осторожным при использовании неизолированных (небезопасных) свойств и @unchecked Sendable для временного решения проблем

У вас есть синглтоны в продуктах? 👍👎
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23👎52
📱 Рисование символов на холсте
Простая статья для начала недели про отрисовку символов на холсте. Холст - тип представления для рисования динамической графики в SwiftUI. Главная особенность - обработка рендеринга сложных фигур эффективнее, чем создание нескольких вьюх
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3