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

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

Swift предоставляет множество встроенных форматтеров, один из которых форматтер списков ListFormatter (iOS 13+). Он помогает объединять списки элементов в удобочитаемые предложения:
🟢Форматировщик списка учитывает языковой стандарт пользователя.
🟢Можно принудительно установить языковой стандарт, изменив свойство place.
🟢Форматировщик списка поддерживает массивы любого типа, но элементы должны быть представлены в виде строк.
🟢Можно использовать настраиваемые типы, соответствующие протоколу CustomizableStringConvertible.
#swift #list #formatter #listformatter
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
9
🐥 [SE-0460] Явная специализация дженериков в Swift
Продолжаю разбирать пропоузалы Swift. В этом предложении вводится новый атрибут @specialized , который позволяет в дженерик функции генерировать предварительно специализированные версии этой функции для определенных типов. Эта специализация создает пользовательскую реализацию функции, где "дженерики" заменяются определенными типами. Это позволяет оптимизировать функции, под конкретные типы: когда неспециализированная версия функции вызывается с одним из этих типов, компилятор генерирует код, который будет повторно отправлен в эти предварительно специализированные версии, если таковые имеются. Врядли это пригодится где-то кроме Foundation и специализированных фреймворков, но идея интересная.
#swift #evolution
Please open Telegram to view this post
VIEW IN TELEGRAM
🔨 Отладка диплинков, пушей и быстрых действий
Отладка фич, таких как диплинки или быстрые действия с главного экрана, может быть сложной задачей. По умолчанию отладчик автоматически подключается при запуске приложения в Xcode. После завершения работы приложения отладчик отключается, что затрудняет тестирование. Но можно изменить поведение в Xcode - выбрать опцию "Wait for executable to be launched". Эта опция позволяет подключать отладчик к приложению даже при ручном запуске.

Шаги:
🟢Product > Scheme > Edit Scheme
🟢Включите опцию "Wait for executable to be launched" на вкладке "Info" секции "Launch"
🟢Запустите приложение в Xcode как обычно (приложение само не запустится)
🟢Вручную запустите приложение с симулятора или устройства следуя тестовому сценарию

Добавляйте в 🔖 чтобы не потерять
#xcode #deeplink #debugging #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
⚡️ Swift для Visual Studio Code 2.0

Вышла новая версия расширения Swift для Visual Studio Code. Расширение поддерживает разработку приложений Swift на всех платформах. Расширение упрощает разработку приложений Swift для серверных, облачных, встраиваемых и Linux/Windows приложений.
🟢Разработано членами рабочей группы Swift Server.
🟢Старая версия автоматически устанавливает новое расширение и отключает себя.
🟢Все языковые функции будут предоставляться новым расширением.

Работает так же через SourceKit-LSP. Посмотреть на реализацию и законтрибьютить можно сюда, если готовы писать на typescript.
К сожалению, это не делает расширение более подходящим для iOS разработки, но радует что поддержка не забросилась и вышел мажорный апдейт. Для меня поддержка VSCode - возможность работать с AI ассистентами, ассистент в Xcode не оправдал ожиданий, а все решения вокруг Xcode больше похожи на костыль
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🐥 Использование групп задач в Swift Concurrency
Группы задач существовали всегда, в GCD, OperationQueue и Combine. Они есть и в Swift Concurrency. Группы задач позволяют динамически запускать несколько дочерних задач и ожидать их выполнения или отмены. Группы задач используют совместную отмену и требуют проверки свойства Task.isCancelled (привет OperaionQueue). В статье на примерах рассматривается использование групп задач и оптимизация при работе с ними:
🟢Задачи добавляются с помощью функции addTask и могут иметь определенный приоритет.
🟢Группы задач выполняются в совместном пуле потоков, что позволяет оптимизировать логику приложения.
🟢Добавление задач только после завершения предыдущих задач помогает сократить потребление памяти.
🟢Функция addTaskUnlessCancelled добавляет задачу только при отсутствии отмены группы задач.

#swift #concurrency #group
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
🈸 Состояние мобильного рынка 2024

Еще один обзор состояния рынка мобильной разработки за 2024г.
Что меня привлекло:
🔵Россия на 5 месте по загрузкам, без учета наших альтсторов на Androd
🔵По прибыли для разработчиков РФ на 13 месте, несмотря на все трудности с оплатой
🔵Число загрузок мобильных приложений увеличилось во всех странах
🔵Заметный рост наблюдался в Индии (+8,28%) и Бразилии (+11,54%)
🔵В Южной Корее и Японии доходы снизились
🔵Общая тенденция указывает на положительную динамику по загрузкам и выручке

Топ категорий по тратам
🔵Развлекательные приложения стали самой прибыльной категорией с доходом в 18,98 миллиарда долларов
🔵Ролевые игры, игры-стратегии, экшн-игры, казуальные игры и социальные приложения также показали значительный рост
🔵Фотографические приложения, приложения для продуктивности и приключенческие игры также внесли значительный вклад в доходы
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Ollama
Mattt продолжает вести блог NSHipster и я с удовольствием погружаюсь в старый добрый стиль и простоту статей. В этот раз тема актуальная - локальные LLM, на примере Ollama:
🟡Позволяет запускать большие языковые модели на Mac.
🟡Работает на основе llama.cpp, предоставляя удобное управление моделями.
🟡Использует файлы моделей для настройки поведения моделей.

📁 Преимущества локального запуска моделей:
🔘Конфиденциальность: данные не покидают устройство.
🔘Стоимость: работа 24/7 без учета времени использования.
🔘Задержка: отсутствие сетевых обращений, быстрое реагирование.
🔘Контроль: отсутствие черного ящика и цензуры.
🔘Надежность: отсутствие отключений и ограничений по квоте API.

🐥 Создание Swift приложений с помощью Ollama:
🟣Ollama предоставляет HTTP API для интеграции с другими инструментами.
🟣Мэт создал свой пакет Ollama Swift
🟣Этот пакет в первую очередь для того чтобы делать утилиты для себя
🟣Примеры реализации RAG-систем. Если для вас это новое сочетание букв-обязательно почитайте. Это способ использовать свою базу знаний при работе с LLM

#swift #llm #ollama
Please open Telegram to view this post
VIEW IN TELEGRAM
👍322
🔨 Переосмысление цветовой системы
Дизайн система? Нет, цветовая система! Очень интересный пример использования системы типов для работы с цветами:
🔵Система проектирования предоставляет цвета для фона, переднего плана и границ.
🔵Каждый цвет может находиться в четырех состояниях: обычном, зависшем, отключенном и нажатом.
🔵Исторически использовался подкласс UIColor, но он не работал с динамическими темами

Проблемы UIColor:
🔴UIColor не предназначен для создания подклассов.
🔴Отсутствие безопасности типов: любой экземпляр UIColor можно использовать где угодно.
🔴Повышение уровня кастомизации требует правильного использования цвета.

Новый подход с фантомными типами:
🟢Введены фантомные типы для обеспечения безопасности ввода на основе контекста.
🟢Определен протокол с тремя перечислениями для ролей цвета.
🟢Создана типобезопасная оболочка для UIColor, обеспечивающая правильную цветовую роль.

У автора большие ожидания от идеи системы типов в Swift, я же надеюсь что это не уйдет дальше идеи и мы останемся с текущей концепцией семантических цветов - accentColor, primary, secondary. Но сама по себе идея использования системы типов для реализации безопасного использования имеет шанс на жизнь

#swift #color #system
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔43