Как устроена система сборки в Xcode?
Многие инженеры могут недооценивать сложность таких систем в целом.
Например, нам в большинстве случаев не приходится настраивать шаги вручную.
Хотя, возможно, вы когда-нибудь пытались понять, почему система сборки Xcode жалуется на цикл компиляции или оптимизировали сборку, используя только билд-логи или Build Timelines, добавленные в Xcode 14.
📖 В этой статье можно узнать, что происходит Xcode при нажатии
😃 iOS Dev
Многие инженеры могут недооценивать сложность таких систем в целом.
Например, нам в большинстве случаев не приходится настраивать шаги вручную.
Хотя, возможно, вы когда-нибудь пытались понять, почему система сборки Xcode жалуется на цикл компиляции или оптимизировали сборку, используя только билд-логи или Build Timelines, добавленные в Xcode 14.
📖 В этой статье можно узнать, что происходит Xcode при нажатии
⌘+R
с помощью XCBuildAnalyzer.Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Возможность юзать if и switch в качестве выражений наглядно
Такая фича для возвращаемых значений уже доступна в Swift 5.9.
📖 А вот тут можно посмотреть, какие ещё варианты возможны.
😃 iOS Dev
Такая фича для возвращаемых значений уже доступна в Swift 5.9.
📖 А вот тут можно посмотреть, какие ещё варианты возможны.
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Dev
Новая опция в Xcode 15: форматирование кода на несколько строк 🤩 Спустя годы после того, как эту функцию запрашивали и после появления довольно популярного репозитория на Github Apple наконец выкатили фичу для разбиения кода на несколько строк. Разве не amazing!…
Кстати, в релизной версии Xcode появился шорткат для форматирования в несколько строк, дефолтно
😎 В KeyBindings можно чекнуть
😃 iOS Dev
Ctrl+M
(но можно назначить свою комбинацию).Structure -> Format to Multiple Lines
.Please open Telegram to view this post
VIEW IN TELEGRAM
Освоение диаграмм в SwiftUI: круговые и кольцевые диаграммы
Фреймворк
Кроме этого, в них можно задействовать
📖 Посмотреть на примеры создания таких диаграмм можно здесь.
😃 iOS Dev
Фреймворк
Swift Charts
принёс множество опций, среди которых, например: гистограммы, графики с применением градиента и возможность даже делать свои игры.Кроме этого, в них можно задействовать
SectorMark
, который можно использовать для построения круговых или кольцевых графиков.📖 Посмотреть на примеры создания таких диаграмм можно здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Произошли важные изменения для URL-адресов в iOS 17.
Парсинг URL был переведён с устаревшего стандарта
RFC 1738/1808
на RFC 3986
(аналогичный тому, что используется для URLComponents). Теперь разбор URL и URLComponents унифицирован.
Если проще, теперь URL автоматически кодирует недопустимые символы и добавляет символ процента для корректного URL.
Please open Telegram to view this post
VIEW IN TELEGRAM
Изучение Swift Concurrency за 2 часа
📺 В этом масштабном (иначе и не сказать) видео Vincent Pradeilles рассказывает о Swift Concurrency с нескольких разных точек зрения.
А вот и сами статьи, которые Винсент использовал:
📖 Async await в Swift с примерами.
📖 Конвертация асинхронного кода в async/await в Swift.
📖 Async let: параллельный вызов async-функций.
📖 Какую роль Tasks играют в системе параллелизма Swift?
📖 Разбор Swift Tasks Groups на примере.
😃 iOS Dev • 🐱 Доступ к алгоритмам
📺 В этом масштабном (иначе и не сказать) видео Vincent Pradeilles рассказывает о Swift Concurrency с нескольких разных точек зрения.
А вот и сами статьи, которые Винсент использовал:
📖 Async await в Swift с примерами.
📖 Конвертация асинхронного кода в async/await в Swift.
📖 Async let: параллельный вызов async-функций.
📖 Какую роль Tasks играют в системе параллелизма Swift?
📖 Разбор Swift Tasks Groups на примере.
Please open Telegram to view this post
VIEW IN TELEGRAM
Продвинутые анимации в SwiftUI: протокол CustomAnimation
🤩 Вышла новая часть замечательной серии статей про анимацию.
В этой публикации авторы обсуждают такие темы, как типы анимаций и протокол
Кроме этого, уделяется внимание
📖 Десятки примеров кода и разбор параметров доступны здесь.
😃 iOS Dev
В этой публикации авторы обсуждают такие темы, как типы анимаций и протокол
CustomAnimation
, новые способы работы с Transactions
и новые параметры. Кроме этого, уделяется внимание
PhaseAnimator
и KeyframeAnimator
.📖 Десятки примеров кода и разбор параметров доступны здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Загрузка кастомных шрифтов в приложение с помощью Swift Package Plugins
🔎 Если вы создаёте свои приложения с общим стилем оформления и сталкиваетесь с проблемой использования одних и тех же шрифтов снова и снова, то одно из решений — создать собственный Swift package.
Это позволит ускорить выпуск приложений и уменьшить дублирование кода.
📖 Пример создания Swift Package с использованием SwiftGen.
Кстати, вот тут я писал о более традиционном способе работы с нестандартными шрифтами.
😃 iOS Dev
Это позволит ускорить выпуск приложений и уменьшить дублирование кода.
📖 Пример создания Swift Package с использованием SwiftGen.
Кстати, вот тут я писал о более традиционном способе работы с нестандартными шрифтами.
Please open Telegram to view this post
VIEW IN TELEGRAM
TipKit: варианты и примеры использования
✅️ Цель
При реализация всплывающих подсказок нужно решить два вопроса:
1️⃣ Как их показать для всех комбинаций языков и размеров экрана.
2️⃣ Как убедиться, что они срабатывают в нужное время, чтобы не перегружать пользователей.
И как раз с этим успешно справляется TipKit.
📖 А вот тут можно посмотреть примеры использования нового фреймворка.
😃 iOS Dev
TipKit
— максимально упростить отображение информации, которая подчеркивает или объясняет ту или иную функцию приложения.При реализация всплывающих подсказок нужно решить два вопроса:
1️⃣ Как их показать для всех комбинаций языков и размеров экрана.
2️⃣ Как убедиться, что они срабатывают в нужное время, чтобы не перегружать пользователей.
И как раз с этим успешно справляется TipKit.
📖 А вот тут можно посмотреть примеры использования нового фреймворка.
Please open Telegram to view this post
VIEW IN TELEGRAM
Запуск приложения: советы по продвижению
Инди-разработчик делится своим опытом и идеями по продвижению приложения в первые дни.
Например, для пресс-релизов важно:
1️⃣ Проблема, которую нужно решить.
2️⃣ Само приложение для решения.
3️⃣ История о том, как появилась идея и как она воплотилась в жизнь.
Большой материал разделен на две части:
📖 Часть 1.
📖 Часть 2.
😃 iOS Dev
Инди-разработчик делится своим опытом и идеями по продвижению приложения в первые дни.
Например, для пресс-релизов важно:
1️⃣ Проблема, которую нужно решить.
2️⃣ Само приложение для решения.
3️⃣ История о том, как появилась идея и как она воплотилась в жизнь.
Большой материал разделен на две части:
📖 Часть 1.
📖 Часть 2.
Please open Telegram to view this post
VIEW IN TELEGRAM
Универсальный датасорс (хранилище данных) в iOS-разработке
Такие решения предоставляют разработчикам API для доступа к данным в коллекциях без привязки к конкретному источнику и типу данных.
📖 В статье на хабре рассматриваются:
🔘 Cтандартные подходы к регистрации и конфигурации ячеек в коллекции.
🔘 Альтернативный подход с использованием
🔘 Пример реализации универсального датасорса (на базе
🔘 Преимущества, особенности, сложности и недостатки подхода.
😃 iOS Dev
Такие решения предоставляют разработчикам API для доступа к данным в коллекциях без привязки к конкретному источнику и типу данных.
📖 В статье на хабре рассматриваются:
🔘 Cтандартные подходы к регистрации и конфигурации ячеек в коллекции.
🔘 Альтернативный подход с использованием
ViewRegistration
.🔘 Пример реализации универсального датасорса (на базе
Diffable Datasource
)🔘 Преимущества, особенности, сложности и недостатки подхода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Обновление местоположения пользователя с помощью Core Location и Swift Concurrency
😎 Мы можем создавать собственные обертки для управления доступом к основным сервисам iOS, используя возможности Swift.
Например, для решения задачи получения геолокации через
📖 А в этом материале рассказано, как написать свой
😃 iOS Dev
Например, для решения задачи получения геолокации через
Core Location
можно задействовать CheckedContinuation
.📖 А в этом материале рассказано, как написать свой
Location Manager
, запросить авторизацию и правильно обновлять локацию пользователя.Please open Telegram to view this post
VIEW IN TELEGRAM
Добавление Firebase Analytics замедляет запуск приложения на 30%
👨💻 Тестили на базовом приложении под iOS (тот, что по дефолту при создании проекта), так как его размер всего 118,5 КБ и нет доп. нагрузки.
Либы добавляли через SPM, а затем сравнивали размер и производительность каждого запуска.
📖 Интересные выводы и результаты других SDK в этом посте. Кстати, тут же и объясняется, почему выбрали относительное, а не абсолютное время сравнения.
😃 iOS Dev
Emerge Tools
замерила производительность топовых аналитических SDK для iOS. Либы добавляли через SPM, а затем сравнивали размер и производительность каждого запуска.
📖 Интересные выводы и результаты других SDK в этом посте. Кстати, тут же и объясняется, почему выбрали относительное, а не абсолютное время сравнения.
Please open Telegram to view this post
VIEW IN TELEGRAM
8 советов по оптимизации приложения для iOS
📺 Itay Brenner и Vincent Pradeilles дают практические советы и разбирают способы повышения производительности в видео.
Более детально разделы доступны по следующим тайм-кодам:
1️⃣ Работа с бинарными символами.
2️⃣ Шаринг кода и ресурсов.
3️⃣ Оптимизация ассетов.
4️⃣ Сохранение основного потока лёгким по возможности.
5️⃣ Использование Static Dispatch.
6️⃣ Разбор менеджеров пакетов, их преимущества и недостатки.
7️⃣ Оптимизация CoreML-моделей.
8️⃣ Про постоянные улучшения.
😃 iOS Dev
📺 Itay Brenner и Vincent Pradeilles дают практические советы и разбирают способы повышения производительности в видео.
Более детально разделы доступны по следующим тайм-кодам:
1️⃣ Работа с бинарными символами.
2️⃣ Шаринг кода и ресурсов.
3️⃣ Оптимизация ассетов.
4️⃣ Сохранение основного потока лёгким по возможности.
5️⃣ Использование Static Dispatch.
6️⃣ Разбор менеджеров пакетов, их преимущества и недостатки.
7️⃣ Оптимизация CoreML-моделей.
8️⃣ Про постоянные улучшения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Для этого нужно будет использовать
StoreKit External Purchase Link Entitlement
, выполнить ряд условий и заполнить форму.При этом комиссия Apple составит 27 % от выручки.
Важнейший шаг к альтернативным сторам?
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Swift-библиотека для моделирования и визуализации графов
⭐️ Её целью является расположение узлов графа так, что все рёбра имели бы более-менее одинаковую длину, ну и свести к минимуму число пересечений рёбер.
Часто подобное можно увидеть в визуализации соцсетей, связей страниц в той-же вики, например, и так далее.
Вы наверняка видели разные реализации таких штук на других языках, но вдруг вам пригодится и такое решение.
🛠 Сама либа от Zhen Li доступна здесь, и получившийся итог завораживает!
😃 iOS Dev
Часто подобное можно увидеть в визуализации соцсетей, связей страниц в той-же вики, например, и так далее.
Вы наверняка видели разные реализации таких штук на других языках, но вдруг вам пригодится и такое решение.
🛠 Сама либа от Zhen Li доступна здесь, и получившийся итог завораживает!
Please open Telegram to view this post
VIEW IN TELEGRAM
Комбинирование разных типов диаграмм для создания уникального дизайна
Существует множество различных типов графиков.
Они просты в использовании и обладают широкими возможностями настройки.
📖 Например, в этой статье автор создаёт комбинированную диаграмму для отображения данных на базе
😃 iOS Dev
Существует множество различных типов графиков.
Они просты в использовании и обладают широкими возможностями настройки.
📖 Например, в этой статье автор создаёт комбинированную диаграмму для отображения данных на базе
Line Chart
и Area Chart
.Please open Telegram to view this post
VIEW IN TELEGRAM
Разделение данных на примере использования .chunked()
🧑💻 Один из самых важных источников знаний для просмотра реализации тех или иных алгоритмов — Swift Algorithms.
Например, если вы пишете много длинных и непростых для чтения циклов, то есть вполне приличный шанс, что уже существует нужный алгоритм.
🌎 Допустим, в приложении для путешествий нужно показать список всех мест, которые вы посетили или планируете посетить, отсортированных и сгруппированных по дате в порядке убывания.
📖 В этом посте рассматривается, как юзать алгоритм
😃 iOS Dev
Например, если вы пишете много длинных и непростых для чтения циклов, то есть вполне приличный шанс, что уже существует нужный алгоритм.
🌎 Допустим, в приложении для путешествий нужно показать список всех мест, которые вы посетили или планируете посетить, отсортированных и сгруппированных по дате в порядке убывания.
📖 В этом посте рассматривается, как юзать алгоритм
.chunked()
для разделения массива и отображения результатов в нужном виде.Please open Telegram to view this post
VIEW IN TELEGRAM
Диспетчеризация потоков и Actors: как их использовать
Акторы обеспечивают выполнение кода в определенном потоке (например, в основном или фоновом).
Они помогают синхронизировать доступ к мутабельным состояниям и предотвращать потенциальные гонки данных.
📖 В этой статье рассматривается, что происходит при вызове методов, помеченных любым атрибутом
😃 iOS Dev
Акторы обеспечивают выполнение кода в определенном потоке (например, в основном или фоновом).
Они помогают синхронизировать доступ к мутабельным состояниям и предотвращать потенциальные гонки данных.
📖 В этой статье рассматривается, что происходит при вызове методов, помеченных любым атрибутом
actor
и как избегать непредвиденных сбоев приложения при определенных контекстах.Please open Telegram to view this post
VIEW IN TELEGRAM
Как учить переполненный мозг или про способности решать сложные задачи
📖 Одна из самых крутых и интересных статей на хабре — про математические способности и то, как сейчас люди современности подходят к решению тех или иных проблем.
Автор уделяет особое внимание тому, что сейчас студенты решают задачи хуже, чем раньше. Отчасти из-за многообразия таких простых в освоении и доступных инструментов (
Но важно отметить, что уровень развития человека сегодня, и, например, в 1930 году абсолютно несопоставим. Те, кто сегодня умеренно справляются с математическими (не только) задачами, раньше считались бы едва ли не гениями.
Масштабные исследования на счёт этого можно прочитать здесь (кстати, там упоминается и GTA, и Zelda в качестве примеров тренировок).
На мой взгляд, именно поэтому особенно важно создавать вызовы, например, реализацию своего компонента, или же рассмотреть принципы тех или иных алгоритмов и попробовать найти их преимущества.
Вообще, книги про тренировки мозга, особенно те, которые дают какие-то рекомендации я не считаю панацеей. И их можно учитывать только как взгляд со стороны, но не руководство к действию.
Несмотря на это, не могу не отметить диаграмму выше. Вы же слышали про состояние потока?
Диаграмма основана на исследованиях о вызовах в процессе наших с вами задач (тут 📺 лекция).
🚩 Вкратце, чтобы достичь такого состояния, нужно, чтобы уровень задач оказался выше среднего, а уровень навыков при этом позволил с ними справляться. Во всех других ситуациях может возникнуть или апатия, или уровень стресса будет слишком высок.
😃 iOS Dev
📖 Одна из самых крутых и интересных статей на хабре — про математические способности и то, как сейчас люди современности подходят к решению тех или иных проблем.
Автор уделяет особое внимание тому, что сейчас студенты решают задачи хуже, чем раньше. Отчасти из-за многообразия таких простых в освоении и доступных инструментов (
google lens
, chatgpt
, и так далее).Но важно отметить, что уровень развития человека сегодня, и, например, в 1930 году абсолютно несопоставим. Те, кто сегодня умеренно справляются с математическими (не только) задачами, раньше считались бы едва ли не гениями.
Масштабные исследования на счёт этого можно прочитать здесь (кстати, там упоминается и GTA, и Zelda в качестве примеров тренировок).
На мой взгляд, именно поэтому особенно важно создавать вызовы, например, реализацию своего компонента, или же рассмотреть принципы тех или иных алгоритмов и попробовать найти их преимущества.
Вообще, книги про тренировки мозга, особенно те, которые дают какие-то рекомендации я не считаю панацеей. И их можно учитывать только как взгляд со стороны, но не руководство к действию.
Несмотря на это, не могу не отметить диаграмму выше. Вы же слышали про состояние потока?
Диаграмма основана на исследованиях о вызовах в процессе наших с вами задач (тут 📺 лекция).
Please open Telegram to view this post
VIEW IN TELEGRAM