Telegram Web Link
Как устроена система сборки в Xcode?

Многие инженеры могут недооценивать сложность таких систем в целом.

Например, нам в большинстве случаев не приходится настраивать шаги вручную.

Хотя, возможно, вы когда-нибудь пытались понять, почему система сборки Xcode жалуется на цикл компиляции или оптимизировали сборку, используя только билд-логи или Build Timelines, добавленные в Xcode 14.

📖 В этой статье можно узнать, что происходит Xcode при нажатии ⌘+R с помощью XCBuildAnalyzer.

😃 iOS Dev
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
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Dev
Новая опция в Xcode 15: форматирование кода на несколько строк 🤩 Спустя годы после того, как эту функцию запрашивали и после появления довольно популярного репозитория на Github Apple наконец выкатили фичу для разбиения кода на несколько строк. Разве не amazing!…
Кстати, в релизной версии Xcode появился шорткат для форматирования в несколько строк, дефолтно Ctrl+M (но можно назначить свою комбинацию).

😎 В KeyBindings можно чекнуть Structure -> Format to Multiple Lines.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Освоение диаграмм в SwiftUI: круговые и кольцевые диаграммы

Фреймворк Swift Charts принёс множество опций, среди которых, например: гистограммы, графики с применением градиента и возможность даже делать свои игры.

Кроме этого, в них можно задействовать SectorMark, который можно использовать для построения круговых или кольцевых графиков.

📖 Посмотреть на примеры создания таких диаграмм можно здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🐣 iOS 17 может сломать ваши проверки URL!

Произошли важные изменения для URL-адресов в iOS 17.

Парсинг URL был переведён с устаревшего стандарта RFC 1738/1808 на RFC 3986 (аналогичный тому, что используется для URLComponents).

Теперь разбор URL и URLComponents унифицирован.

Если проще, теперь URL автоматически кодирует недопустимые символы и добавляет символ процента для корректного URL.

😃 iOS Dev
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🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Продвинутые анимации в SwiftUI: протокол CustomAnimation

🤩 Вышла новая часть замечательной серии статей про анимацию.

В этой публикации авторы обсуждают такие темы, как типы анимаций и протокол CustomAnimation, новые способы работы с Transactions и новые параметры.

Кроме этого, уделяется внимание PhaseAnimator и KeyframeAnimator.

📖 Десятки примеров кода и разбор параметров доступны здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Загрузка кастомных шрифтов в приложение с помощью Swift Package Plugins

🔎 Если вы создаёте свои приложения с общим стилем оформления и сталкиваетесь с проблемой использования одних и тех же шрифтов снова и снова, то одно из решений — создать собственный Swift package.

Это позволит ускорить выпуск приложений и уменьшить дублирование кода.

📖 Пример создания Swift Package с использованием SwiftGen.

Кстати, вот тут я писал о более традиционном способе работы с нестандартными шрифтами.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
TipKit: варианты и примеры использования

✅️ Цель TipKit — максимально упростить отображение информации, которая подчеркивает или объясняет ту или иную функцию приложения.

При реализация всплывающих подсказок нужно решить два вопроса:

1️⃣ Как их показать для всех комбинаций языков и размеров экрана.

2️⃣ Как убедиться, что они срабатывают в нужное время, чтобы не перегружать пользователей.

И как раз с этим успешно справляется TipKit.

📖 А вот тут можно посмотреть примеры использования нового фреймворка.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Запуск приложения: советы по продвижению

Инди-разработчик делится своим опытом и идеями по продвижению приложения в первые дни.

Например, для пресс-релизов важно:

1️⃣ Проблема, которую нужно решить.
2️⃣ Само приложение для решения.
3️⃣ История о том, как появилась идея и как она воплотилась в жизнь.

Большой материал разделен на две части:

📖 Часть 1.
📖 Часть 2.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Универсальный датасорс (хранилище данных) в iOS-разработке

Такие решения предоставляют разработчикам API для доступа к данным в коллекциях без привязки к конкретному источнику и типу данных.

📖 В статье на хабре рассматриваются:

🔘 Cтандартные подходы к регистрации и конфигурации ячеек в коллекции.

🔘 Альтернативный подход с использованием ViewRegistration.

🔘 Пример реализации универсального датасорса (на базе Diffable Datasource)

🔘 Преимущества, особенности, сложности и недостатки подхода.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Обновление местоположения пользователя с помощью Core Location и Swift Concurrency

😎 Мы можем создавать собственные обертки для управления доступом к основным сервисам iOS, используя возможности Swift.

Например, для решения задачи получения геолокации через Core Location можно задействовать CheckedContinuation.

📖 А в этом материале рассказано, как написать свой Location Manager, запросить авторизацию и правильно обновлять локацию пользователя.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Добавление Firebase Analytics замедляет запуск приложения на 30%

Emerge Tools замерила производительность топовых аналитических SDK для iOS.

👨‍💻 Тестили на базовом приложении под iOS (тот, что по дефолту при создании проекта), так как его размер всего 118,5 КБ и нет доп. нагрузки.

Либы добавляли через SPM, а затем сравнивали размер и производительность каждого запуска.

📖 Интересные выводы и результаты других SDK в этом посте. Кстати, тут же и объясняется, почему выбрали относительное, а не абсолютное время сравнения.

😃 iOS Dev
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
Please open Telegram to view this post
VIEW IN TELEGRAM
В России разрешили использовать альтернативные способы покупок в App Store!

Для этого нужно будет использовать StoreKit External Purchase Link Entitlement, выполнить ряд условий и заполнить форму.

При этом комиссия Apple составит 27 % от выручки.

Важнейший шаг к альтернативным сторам?

😃 iOS Dev
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
Please open Telegram to view this post
VIEW IN TELEGRAM
Комбинирование разных типов диаграмм для создания уникального дизайна

Существует множество различных типов графиков.

Они просты в использовании и обладают широкими возможностями настройки.

📖 Например, в этой статье автор создаёт комбинированную диаграмму для отображения данных на базе Line Chart и Area Chart.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Разделение данных на примере использования .chunked()

🧑‍💻 Один из самых важных источников знаний для просмотра реализации тех или иных алгоритмов — Swift Algorithms.

Например, если вы пишете много длинных и непростых для чтения циклов, то есть вполне приличный шанс, что уже существует нужный алгоритм.

🌎 Допустим, в приложении для путешествий нужно показать список всех мест, которые вы посетили или планируете посетить, отсортированных и сгруппированных по дате в порядке убывания.

📖 В этом посте рассматривается, как юзать алгоритм .chunked() для разделения массива и отображения результатов в нужном виде.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Диспетчеризация потоков и Actors: как их использовать

Акторы обеспечивают выполнение кода в определенном потоке (например, в основном или фоновом).

Они помогают синхронизировать доступ к мутабельным состояниям и предотвращать потенциальные гонки данных.

📖 В этой статье рассматривается, что происходит при вызове методов, помеченных любым атрибутом actor и как избегать непредвиденных сбоев приложения при определенных контекстах.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Как учить переполненный мозг или про способности решать сложные задачи

📖 Одна из самых крутых и интересных статей на хабре — про математические способности и то, как сейчас люди современности подходят к решению тех или иных проблем.

Автор уделяет особое внимание тому, что сейчас студенты решают задачи хуже, чем раньше. Отчасти из-за многообразия таких простых в освоении и доступных инструментов (google lens, chatgpt, и так далее).

Но важно отметить, что уровень развития человека сегодня, и, например, в 1930 году абсолютно несопоставим. Те, кто сегодня умеренно справляются с математическими (не только) задачами, раньше считались бы едва ли не гениями.

Масштабные исследования на счёт этого можно прочитать здесь (кстати, там упоминается и GTA, и Zelda в качестве примеров тренировок).

На мой взгляд, именно поэтому особенно важно создавать вызовы, например, реализацию своего компонента, или же рассмотреть принципы тех или иных алгоритмов и попробовать найти их преимущества.

Вообще, книги про тренировки мозга, особенно те, которые дают какие-то рекомендации я не считаю панацеей. И их можно учитывать только как взгляд со стороны, но не руководство к действию.

Несмотря на это, не могу не отметить диаграмму выше. Вы же слышали про состояние потока?

Диаграмма основана на исследованиях о вызовах в процессе наших с вами задач (тут 📺 лекция).

🚩 Вкратце, чтобы достичь такого состояния, нужно, чтобы уровень задач оказался выше среднего, а уровень навыков при этом позволил с ними справляться. Во всех других ситуациях может возникнуть или апатия, или уровень стресса будет слишком высок.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
2024/10/02 04:22:40
Back to Top
HTML Embed Code: