iOS Dev
Kanalga Telegram’da o‘tish
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
Ko'proq ko'rsatish7 966
Obunachilar
+324 soatlar
+207 kun
+5530 kun
Postlar arxiv
7 969
Диспетчеризация потоков и Actors: как их использовать
Акторы обеспечивают выполнение кода в определенном потоке (например, в основном или фоновом).
Они помогают синхронизировать доступ к мутабельным состояниям и предотвращать потенциальные гонки данных.
📖 В этой статье рассматривается, что происходит при вызове методов, помеченных любым атрибутом
actor и как избегать непредвиденных сбоев приложения при определенных контекстах.
😃 iOS Dev7 969
Разделение данных на примере использования .chunked()
🧑💻 Один из самых важных источников знаний для просмотра реализации тех или иных алгоритмов — Swift Algorithms.
Например, если вы пишете много длинных и непростых для чтения циклов, то есть вполне приличный шанс, что уже существует нужный алгоритм.
🌎 Допустим, в приложении для путешествий нужно показать список всех мест, которые вы посетили или планируете посетить, отсортированных и сгруппированных по дате в порядке убывания.
📖 В этом посте рассматривается, как юзать алгоритм
.chunked() для разделения массива и отображения результатов в нужном виде.
😃 iOS Dev7 969
Комбинирование разных типов диаграмм для создания уникального дизайна
Существует множество различных типов графиков.
Они просты в использовании и обладают широкими возможностями настройки.
📖 Например, в этой статье автор создаёт комбинированную диаграмму для отображения данных на базе
Line Chart и Area Chart.
😃 iOS Dev7 969
Swift-библиотека для моделирования и визуализации графов
⭐️Её целью является расположение узлов графа так, что все рёбра имели бы более-менее одинаковую длину, ну и свести к минимуму число пересечений рёбер.
Часто подобное можно увидеть в визуализации соцсетей, связей страниц в той-же вики, например, и так далее.
Вы наверняка видели разные реализации таких штук на других языках, но вдруг вам пригодится и такое решение.
🛠 Сама либа от Zhen Li доступна здесь, и получившийся итог завораживает!
😃 iOS Dev
7 969
❗ В России разрешили использовать альтернативные способы покупок в App Store!
Для этого нужно будет использовать
StoreKit External Purchase Link Entitlement, выполнить ряд условий и заполнить форму.
При этом комиссия Apple составит 27 % от выручки.
Важнейший шаг к альтернативным сторам?
😃 iOS Dev7 969
8 советов по оптимизации приложения для iOS
📺 Itay Brenner и Vincent Pradeilles дают практические советы и разбирают способы повышения производительности в видео.
Более детально разделы доступны по следующим тайм-кодам:
1️⃣ Работа с бинарными символами.
2️⃣ Шаринг кода и ресурсов.
3️⃣ Оптимизация ассетов.
4️⃣ Сохранение основного потока лёгким по возможности.
5️⃣ Использование Static Dispatch.
6️⃣ Разбор менеджеров пакетов, их преимущества и недостатки.
7️⃣ Оптимизация CoreML-моделей.
8️⃣ Про постоянные улучшения.
😃 iOS Dev
7 969
Добавление Firebase Analytics замедляет запуск приложения на 30%
Emerge Tools замерила производительность топовых аналитических SDK для iOS.
👨💻 Тестили на базовом приложении под iOS (тот, что по дефолту при создании проекта), так как его размер всего 118,5 КБ и нет доп. нагрузки.
Либы добавляли через SPM, а затем сравнивали размер и производительность каждого запуска.
📖 Интересные выводы и результаты других SDK в этом посте. Кстати, тут же и объясняется, почему выбрали относительное, а не абсолютное время сравнения.
😃 iOS Dev7 969
Обновление местоположения пользователя с помощью Core Location и Swift Concurrency
😎 Мы можем создавать собственные обертки для управления доступом к основным сервисам iOS, используя возможности Swift.
Например, для решения задачи получения геолокации через
Core Location можно задействовать CheckedContinuation.
📖 А в этом материале рассказано, как написать свой Location Manager, запросить авторизацию и правильно обновлять локацию пользователя.
😃 iOS Dev7 969
Универсальный датасорс (хранилище данных) в iOS-разработке
Такие решения предоставляют разработчикам API для доступа к данным в коллекциях без привязки к конкретному источнику и типу данных.
📖 В статье на хабре рассматриваются:
🔘 Cтандартные подходы к регистрации и конфигурации ячеек в коллекции.
🔘 Альтернативный подход с использованием
ViewRegistration.
🔘 Пример реализации универсального датасорса (на базе Diffable Datasource)
🔘 Преимущества, особенности, сложности и недостатки подхода.
😃 iOS Dev7 969
Запуск приложения: советы по продвижению
Инди-разработчик делится своим опытом и идеями по продвижению приложения в первые дни.
Например, для пресс-релизов важно:
1️⃣ Проблема, которую нужно решить.
2️⃣ Само приложение для решения.
3️⃣ История о том, как появилась идея и как она воплотилась в жизнь.
Большой материал разделен на две части:
📖 Часть 1.
📖 Часть 2.
😃 iOS Dev
7 969
TipKit: варианты и примеры использования
✅️ Цель
TipKit — максимально упростить отображение информации, которая подчеркивает или объясняет ту или иную функцию приложения.
При реализация всплывающих подсказок нужно решить два вопроса:
1️⃣ Как их показать для всех комбинаций языков и размеров экрана.
2️⃣ Как убедиться, что они срабатывают в нужное время, чтобы не перегружать пользователей.
И как раз с этим успешно справляется TipKit.
📖 А вот тут можно посмотреть примеры использования нового фреймворка.
😃 iOS Dev7 969
Загрузка кастомных шрифтов в приложение с помощью Swift Package Plugins
🔎 Если вы создаёте свои приложения с общим стилем оформления и сталкиваетесь с проблемой использования одних и тех же шрифтов снова и снова, то одно из решений — создать собственный Swift package.
Это позволит ускорить выпуск приложений и уменьшить дублирование кода.
📖 Пример создания Swift Package с использованием SwiftGen.
Кстати, вот тут я писал о более традиционном способе работы с нестандартными шрифтами.
😃 iOS Dev
7 969
Продвинутые анимации в SwiftUI: протокол CustomAnimation
🤩 Вышла новая часть замечательной серии статей про анимацию.
В этой публикации авторы обсуждают такие темы, как типы анимаций и протокол
CustomAnimation, новые способы работы с Transactions и новые параметры.
Кроме этого, уделяется внимание PhaseAnimator и KeyframeAnimator.
📖 Десятки примеров кода и разбор параметров доступны здесь.
😃 iOS Dev7 969
Изучение Swift Concurrency за 2 часа
📺 В этом масштабном (иначе и не сказать) видео Vincent Pradeilles рассказывает о Swift Concurrency с нескольких разных точек зрения.
А вот и сами статьи, которые Винсент использовал:
📖 Async await в Swift с примерами.
📖 Конвертация асинхронного кода в async/await в Swift.
📖 Async let: параллельный вызов async-функций.
📖 Какую роль Tasks играют в системе параллелизма Swift?
📖 Разбор Swift Tasks Groups на примере.
😃 iOS Dev
7 969
🐣 iOS 17 может сломать ваши проверки URL!
Произошли важные изменения для URL-адресов в iOS 17.
Парсинг URL был переведён с устаревшего стандарта
RFC 1738/1808 на RFC 3986 (аналогичный тому, что используется для URLComponents).
Теперь разбор URL и URLComponents унифицирован.
Если проще, теперь URL автоматически кодирует недопустимые символы и добавляет символ процента для корректного URL.
😃 iOS Dev7 969
Освоение диаграмм в SwiftUI: круговые и кольцевые диаграммы
Фреймворк
Swift Charts принёс множество опций, среди которых, например: гистограммы, графики с применением градиента и возможность даже делать свои игры.
Кроме этого, в них можно задействовать SectorMark, который можно использовать для построения круговых или кольцевых графиков.
📖 Посмотреть на примеры создания таких диаграмм можно здесь.
😃 iOS Dev7 969
Возможность юзать if и switch в качестве выражений наглядно
Такая фича для возвращаемых значений уже доступна в Swift 5.9.
📖 А вот тут можно посмотреть, какие ещё варианты возможны.
😃 iOS Dev
