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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
🐥 Современное конструирование URL-адресов в Swift
John Sundell вернулся к ведению своего сайта и начал с базы, как конструировать URL-адрес в Swift:
🟢URL-адреса в Swift представляются с помощью выделенного типа URL-адрес.
🟢Использование URL-адреса требует преобразования строк в URL-адреса, что может быть неудобно.
🟢Расширение URL-адреса позволяет выполнять принудительное разворачивание для статических строк.
🟢В Swift 5.9 появились макросы, которые могут быть полезны для статических URL-адресов.
🟢Макрос позволяет проверять статические строки URL-адресов во время компиляции.

Динамические компоненты URL-адресов
🔵Для динамических URL-адресов можно использовать URL-компоненты, но это требует дополнительных функций
🔵В iOS 16 появился новый API для создания динамических URL-адресов, который упрощает процесс.
🔵Новый API позволяет создавать динамические URL-адреса с помощью статического URL-адреса. Это упрощает процесс и делает его более читаемым.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🈸 Залетаем в Spotlight
Удивительный факт, маркетологи тратят невероятные бюджеты на рекламу приложения, но мало кто готов выделить время разработки на бесплатные возможности попадания в контекст пользователя. Например интегрироваться с Spotlight:
🔵Spotlight позволяет пользователям быстро находить приложения, файлы и другие элементы на устройстве.
🔵Spotlight индексирует как локальные, так и онлайн-данные.
🔵Интегрируется с Siri и другими сервисами для контекстных подсказок.

Способы индексации контента:
🔵Использование AppShortcutsProvider
🔵Индексация контента с помощью основных API Spotlight
🔵Начиная с iOS 18.4, можно управлять отображением объектов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍5🔥2
🐥Использование 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