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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
Использование Apple Swift и SwiftUI в iOS 18

Вышел ежегодный анализ инструментов, используемых внутри Apple. Один из самых лучших маркеров готовности технологии-процент использования внутри Apple:
🟢iOS 18 содержит 6800 бинарников, что на 770 больше, чем в iOS 17
🟢Количество приложений, использующих Swift, увеличилось на 50% по сравнению с iOS 17
🟢SwiftUI используется в 592 бинарниках, что на 19 больше, чем в iOS 17

Эволюция языков программирования
🟣SwiftUI стал основным UI фреймворком в iOS 18
🟣Количество приложений, использующих UIKit, выросло на 8%, SwiftUIболее чем на 50%
🟣В iOS 18 появилась платформа SwiftUICore для интеграции низкоуровневого кода SwiftUI с UIKit

Новые функции безопасности
🔴iOS 18 расширила функцию безопасности BlastDoor для защиты от атак
🔴Secure Enclave в iOS 18 использует Swift для обеспечения безопасности
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
🆓 Простой обмен данными о состоянии в Swift
Pointfree представили новую open-source библиотеку Sharing для обмена данными о состоянии приложения. Библиотека основана на инструментах из библиотеки Composable Architecture и может использоваться в iOS, macOS и кроссплатформе:
🟢Основной инструмент библиотеки - "проперти врапер" @Shared для совместного использования состояния нескольких частей приложения и сохранения данных во внешних системах хранения
🟢Библиотека поддерживает три стратегии сохранения: appStorage, fileStorage и inMemory
🟢@Shared может использоваться практически в любом месте приложения, включая наблюдаемые модели, View в SwiftUI, ViewContoller в UIKit и многое другое
🟢Библиотека обеспечивает тестирование общего состояния и поддерживает модульное тестирование функций, использующих @Shared
🟢Репозиторий общего доступа содержит множество примеров и тематических исследований для демонстрации возможностей библиотеки
🟢Библиотека решает проблемы с хранением данных в UserDefaults, файловой системе и памяти, а также позволяет создавать собственные стратегии сохранения

Удобно и лаконично, а главное с открытими исходниками и примерами:
🔵FirebaseDemo: демонстрация того, как общее состояние может управляться удалённой конфигурацией Firebase.
🔵GRDBDemo: демонстрация того, как общее состояние может быть реализовано с помощью SQLite примерно так же как с @Query в SwiftData.
🔵WasmDemo: приложение SwiftWasm, использующее эту библиотеку для обмена данными с локальным хранилищем вашего веб-браузера.
🔵SyncUps: демонстрационное приложение для обмена данными и их сохранения в файловой системе
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🔨 Swift-Obj-C интероп и Swift Concurrency

При использовании Swift Concurrency и Objective-C нужно быть максимально осторожным, при добавлении ключевого слова async меняется Obj-C интерфейс интерропа. "Утиная" типизация тут не видит проблемы и вызов селектора приводит к рантайм крашу. Неявная проблема и странное героическое преодоление. Именно по-этому в Objective-C было хорошим тоном при вызове селектора проверять respondstoselector. Но сам кейс разобрать интересно:
🔴Ключевое слово async в Swift добавляет к Obj-C сигнатуре метода - WithCompletionHandler
🔴В обратную сторону это тоже работает, Swift сопоставляет все методы Obj-C с суффиксом WithCompletionHandler как async
🔴Решение автора состоит в переопределении метода sendAction что выглядит как очень хрупкий костыль, тут либо уходить в NSProxy, либо оставлять интероп синхронным а асинхронной выполнять работу внутри Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
😥 Core Location API, советы по использованию
Пост о использовании CoreLocation. Казалось бы, что может быть проще. Но работа с геолокацией это одна из кроличьих нор iOS и ловушек:
🔵iOS 17 и iOS 18 Core Location API получил обновления, включая новые настройки разрешений
🔵В iOS 18.1 появились новые API и улучшения
🔵CLServiceSession рекомендуется для iOS 18+
🔵Официальная документация Apple по CoreLocation местами не актуальна для iOS 17 и iOS 18 😥
🔵Разрешение always не требуется для фоновых обновлений
🔵CLLocationUpdate.liveUpdates возвращает поток данных
🔵В iOS 18 Core Location автоматически отключает CLLocationUpdate.liveUpdates при переходе в фоновый режим и повторно включает его при возврате в приложение
🔵В iOS 17 это обрабатывается вручную
🔵В iOS 17 представлен флаг isStationary, который устарел в iOS 18 и переименован в CLLocationUpdate.stationary
🔵Функция locationUnavailable введена в iOS 18, но поведение изменилось в iOS 18.1
🔵Обновления locationUnavailable непредсказуемы и могут вызывать мерцание пользовательского интерфейса
🔵CLMonitor в симуляторе iOS 18.1 работает с переменным успехом
🔵Тестирование можно проводить через имитация изменения местоположения с помощью файлов GPX. Воспроизведение файла GPX начинается сразу после запуска приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👏3
📱 SwiftUI техники отладки рендера
SwiftUI предоставляет широкий набор для декларативного описания пользовательского интерфейса. Но без должного опыта есть большая вероятность "описать" его не так как хотелось бы видеть. Для отладки рендера существуют отдельные библиотеки, но можно обойтись и подручными средствами:
🟢Визуальная отладка с использованием границ и фона помогает выявить проблемы с компоновкой
🟢Предварительный просмотр в реальном времени в Xcode обеспечивает рендеринг пользовательского интерфейса в реальном времени
🟢GeometryReader - мощный инструмент для доступа к размерам и расположению видов в пределах их родительских элементов
🟢Модификаторы условной отладки позволяют выполнять выборочную отладку без изменения кода пользовательского интерфейса
🟢Система верстки SwiftUI основана на двухэтапном процессе: измерение и позиционирование
🟢Отладка с использованием иерархий View в Xcode помогает находить скрытые View, устранять проблемы с выравниванием и выявлять перекрывающиеся View
🟢Xcode Instruments позволяют анализировать производительность и оптимизировать рендер
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3