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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
😺️ SwiftUI Markdown

Так как SwiftUI Text поддерживает очень небольшое подмножество спеки Markdown, есть множество альтернативных решений. Одним из лучших, на мой взгляд, является SwiftUI Markdown
🟠Минимальные таргеты: iOS 15, macOS 12
🟠Под капотом использует swift-cmark - расширенную версию эталонной реализации CommonMark на языке Си. 🟠swift-cmark лежит в аккаунте Swiftlang
🟠Тянет зависимостью NetworkImage и SnapshotTesting.
🟠NetworkImage используется в DefaultImageProvider для загрузки изображений, можно заменить ImageProvider своей реализацией
🟠SnapshotTesting используется для тестового таргета. Библиотека покрывает снапшот-тестами все элементы, можно использовать как хороший пример использования снапшот-тестирования
🟠Содержит демо-проект для того чтобы проверить отображение нужной конфигурации и посмотреть на примеры использования
Если же вам понадобится самостоятельно парсить Markdown и рендерить Markdown, лучше взять Swift Markdown. Этот парсер так же базируется на cmark
#swiftui #markdown
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🐥 Глоссарий по параллелизму Swift

Наткнулся на годный глоссарий по Swift Concurrency. Cодержит термины, ключевые слова и аннотации, связанные с параллелизмом. Содержит тип (ключевое слово, протокол, flow control), описание, ссылку на пропоузал и пример использования. Когда это может быть полезно? Пройтись и проверить что вы знакомы со всем что нужно, объяснить коллеге понятными словами, разобраться в MR, подготовиться к собесу.
Точно достойно 🔖
#swift #concurrency #glossary
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
🍏 Аналитика AppStore по обновлениям
В этом году необычно рано вышла аналитика Apple по обновлениям iOS. В прошлом году обновление вышло в феврале. Я задался вопросом, каким образом происходит выбор времени публикации аналитики. В вебархиве последние 3 версии iOS показывают следующее:
🟢Обновление публикуется либо в дату, либо при достижении 76% обновлений
🟢Официальный цикл поддержки устройств со старта продаж - 4 года
🟢iOS 18 достигла своего бенчмарка раньше iOS 17, несмотря на скудное количество фич
🟢Лишь 5% актуальных устройств ниже iOS 17
🟢13% всех устройств ниже iOS 17
Apple продолжает улучшать способы "добровольного обновления" устройств пользователей. Если людей не бесит красный бейдж, то обновление будет предлагаться до тех пор, пока пользователь не согласится.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔨 Путь к стабильности: как мы снизили потребление оперативной памяти в iOS-приложении
Очень интересная статья от разработчиков Aliexpress (почему-то думал что разработка на паузе, приятно удивлен результатами ребят). Из того что удалось найти в открытых источниках - ребята заметно продвинулись со своим BDUI под названием Fusion (доклад с Mobius), а в данной статье рассказывают как добивались 99.9% Crash-free оптимизацией потребления памяти:
🟡Разработали инструмент мониторинга памяти.
🟡Отслеживают потребление ресурсов на этапе тестирования.
🟡Борятся предотвращением создания ресурсоёмких экранов.
🟡Профилировают через функции ядра ОС.

Результаты:
🟢Внедрение системы мониторинга повысило стабильность приложения.
🟢Снизилось количество крашей, связанных с нехваткой памяти.
🟢Предотвращено появление новых проблем.
🟢Интеграция с Гитлаб и Grafana автоматизировала процесс сбора данных и предоставила инструменты для их визуализации и анализа.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
5
🐥 Swift Collections package
Каждый раз, когда я вижу в MR очередную реализацию "более эффективной" коллекции, хочется бить по рукам. Даже если есть практическая необходимость, уже есть официальный пакет с открытым исходным кодом для расширения набора коллекций Swift. Цель проекта - служить испытательным полигоном для новых структур данных, улучшить дизайн и исправить ошибки до официального включения в библиотеку. Например, есть реализации для двусторонней очереди (Deque), упорядоченного набора (OrderedSet), упорядоченного словаря (OrderedDictionary), BitSet, BitArray, Heap, TreeSet и TreeDictionary.
Особенности коллекций:

Deque:
• Упорядоченная коллекция с произвольным доступом и изменяемостью
• Поддерживает эффективные вставки и удаления с обоих концов
• Обеспечивает удобные операции по вставке и выталкиванию элементов

OrderedSet:
• Гибрид массива и набора
• Поддерживает уникальные элементы и эффективные тесты на принадлежность
• Использует массив для хранения элементов и хэш-таблицу для индексов

OrderedDictionary:
• Альтернатива словарю для эффективного доступа к элементам в различных позициях
• Вставляет новые пары ключ-значение за постоянное время
• Обеспечивает произвольный доступ к парам ключ-значение
#swift #collections
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🐥 Ignine - статические сайты на Swift
У вас бывает желание сделать простой статический сайт? Иногда хочется быстро накидать, но не хочется напрямую все верстать руками. Кажется, я нашел себе нового фаворита взамен Hugo. Сначала я был максимально скептичен, обычный POC по DSL Swift <-> HTML, подобные решения уже были.
Ignite - это статический конструктор сайтов для разработчиков любящих Swift. Он предлагет выразительный и мощный API для создания красивых веб-сайтов. Ignite не пытается преобразовать пользовательский код Swift в HTML или просто преобразовать HTML-теги в Swift-код. Вместо этого он нацелен на использование синтаксиса, подобного SwiftUI, чтобы помочь вам создавать отличные веб-сайты, даже если вы не разбираетесь в HTML или CSS. Поддерживаются все основные концепты современного веба:
🟢Grid Layout
🟢Navigation
🟢Content
🟢Text
🟢Styling
🟢Theming
🟢Modifiers
Все это можно вживую посмотреть на демо странице. Что приятно, этот продукт используется для hackingwithswift а значит не только активно поддерживается, но и соответствует требованиям разработчиков. Чем вам не pet-проект на выходные 🥂
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍1
⚡️ Swift Build открыли исходники!
Врываемся в рабочую неделю с супер новостями, Apple выпускает Swift Build в опенсорс! Наконец, можно взглянуть на внутренние процессы сборки swift, включая поддержку Linux и Windows. Я не стал торопиться с публикацией на выходных и потратил немного времени чтобы понять что мы получили и что это значит для будущего Swift.
Cистема сборки отвечает за преобразование входных данных (исходников, ассетов, конфигураций) в выходные артефакты (библиотеку, утилиту, приложение). Swift Build отвечает за этап планирования сборки и за саму сборку внутри Swift Package Manager и Xcode. Работает поверх llbuild и интегрирован с компилятором Swift.

Чем отличается swift-build от xcodebuild и Xcode?
🟣Swift-build использует внутреннее представление проекта "PIF"
🟣xcodebuild преобразует пользовательские форматы конфигурации в PIF перед передачей в swift-build
🟣swift-build можно использовать для создания проектов Xcode, но сначала нужно преобразовать их в PIF с помощью xcodebuild

Что это значит для сообщества?
🟢Можно будет оптимизировать сборку под свой проект и протестировать в Xcode начиная с Xcode 16.2
🟢Появилась возможность интегрировать альтернативные IDE со Swift, VSCode или Cursor
🟢Swift становится универсальным языком и больше отвязан от экосистемы Apple
#swiftbuild
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11
Network Link Conditioner

Если вы тестируете свое приложение на девайсе или симмуляторе в условиях хорошей сети, вы точно пропускаете часть проблем, возникающих у пользователей. Сотовая сеть не везде хорошо ловит, а даже если ловит хорошо, может оказаться что вышка перегружена и LTE превращается в 3g. Для этого в iOS и MacOS существует отдельный инструмент "Network Link Conditioner". Вот как его включить:
🟢В macOS Sequoia он не входит в стандартный набор ОС, требуется установить Additional Tools for Xcode
🟢На устройстве Network Link Conditioner можно найти в разделе настроек разработчика, который появляется после активации

Главное-не забыть его выключить, ставьте 🎉 кто забывал. Я как-то неделю ходил с 3G
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉24👍4