Использование общих зависимостей с помощью SPM
Иногда мы можем столкнуться с дублированием зависимостей, или в крайне редких случаях сложностями с версионированием, что может стать проблемой.
👩🎓 Хотя в SPM нет базового решения для таких случаев, можно использовать обходной путь.
Ключевой момент заключается в том, что, объявив пакет как зависимость в Package.swift, вы можете импортировать все его зависимости.
📖 В этой статье автор разбирает необходимые шаги, а здесь можно посмотреть пример проекта.
😃 iOS Dev
Иногда мы можем столкнуться с дублированием зависимостей, или в крайне редких случаях сложностями с версионированием, что может стать проблемой.
Ключевой момент заключается в том, что, объявив пакет как зависимость в Package.swift, вы можете импортировать все его зависимости.
📖 В этой статье автор разбирает необходимые шаги, а здесь можно посмотреть пример проекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
Подборка паттернов проектирования, реализованных в Swift 5.0
Репозиторий с 14 (!) тысячами звёзд на Github на примерах показывает сразу несколько десятков шаблонов, сгруппированных в три группы: поведенческие, творческие и структурные.
📖 Ссылка на примеры здесь.
📖 Кстати, вот тут есть проект с использованием clean architecture и MVVM.
😃 iOS Dev
Репозиторий с 14 (!) тысячами звёзд на Github на примерах показывает сразу несколько десятков шаблонов, сгруппированных в три группы: поведенческие, творческие и структурные.
📖 Ссылка на примеры здесь.
📖 Кстати, вот тут есть проект с использованием clean architecture и MVVM.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как использовать Stable Diffusion для генерации изображений с использованием Swift CLI
Для iOS-разработчика
Благодаря оптимизациям для Core ML, Stable Diffusion можно использовать на устройствах Apple Silicon.
И, что особенно важно, модель хранится локально на устройстве, поэтому пользователям не требуется онлайн-подключение.
📖 В этом руководстве можно узнать, как воспользоваться командной строкой (CLI) Swift для создания такого контента.
👨💻 На всякий случай, поделюсь неплохим гайдом по описанию промптов.
😃 iOS Dev
Для iOS-разработчика
Stable Diffusion
может оказаться весьма полезным инструментом для генерации контента. Благодаря оптимизациям для Core ML, Stable Diffusion можно использовать на устройствах Apple Silicon.
И, что особенно важно, модель хранится локально на устройстве, поэтому пользователям не требуется онлайн-подключение.
📖 В этом руководстве можно узнать, как воспользоваться командной строкой (CLI) Swift для создания такого контента.
Please open Telegram to view this post
VIEW IN TELEGRAM
Используете UserDefaults? Нужно будет указать причину
Начиная с осени текущего года при загрузке в
А начиная с весны 2024 года нам нужно будет явно указывать причину, как именно приложение использует API.
Для категорий появится ключ:
🥺 И вот что интересно, среди них: File timestamp APIs (в том чиле creationDate/modificationDate, которые многие используют для кэша), Disk space APIs (например, systemFreeSize) и UserDefaults.
Всё это нужно для предотвращения фингерпринтинга (когда пользователя пытаются идентифицировать по разной комбинации параметров).
Как заметили в одном чате, такими темпами скоро надо будет указывать причину выбора названий переменных.
😃 iOS Dev
Начиная с осени текущего года при загрузке в
App Store Connect
при использовании API (в том числе из SDK сторонних разработчиков), будет соответствующее уведомление. А начиная с весны 2024 года нам нужно будет явно указывать причину, как именно приложение использует API.
Для категорий появится ключ:
NSPrivacyAccessedAPIType
, а для значений нужно указать NSPrivacyAccessedAPITypeReasons
.Всё это нужно для предотвращения фингерпринтинга (когда пользователя пытаются идентифицировать по разной комбинации параметров).
Как заметили в одном чате, такими темпами скоро надо будет указывать причину выбора названий переменных.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Повторение эффекта анимации NameDrop с использованием Metal and Swift Shader
🤩 Пожалуй, это самая эффектная анимация в iOS 17.
И ранее я уже приводил пример реализации в нашем канале.
📖 В этом же решении автор использовал комбинацию Metal и Swift Shader (доступно на github).
😃 iOS Dev
И ранее я уже приводил пример реализации в нашем канале.
📖 В этом же решении автор использовал комбинацию Metal и Swift Shader (доступно на github).
Please open Telegram to view this post
VIEW IN TELEGRAM
Swift Charts и реализация скролла на графиках
⭐️ Одна из долгожданных функций — возможность скроллить графики.
Эта функция наконец была реализована в последней версии Swift Charts (спойлер: нужно юзать
📖 В этом материале можно узнать о тонкостях реализации и возможностях настройки.
😃 iOS Dev
Эта функция наконец была реализована в последней версии Swift Charts (спойлер: нужно юзать
chartScrollableAxes
). 📖 В этом материале можно узнать о тонкостях реализации и возможностях настройки.
Please open Telegram to view this post
VIEW IN TELEGRAM
Xcode Bookmarks: создание закладок в коде и организация задач
Закладки в Xcode — новая фича, чтобы быстро перемещаться между важными участками кода (и не только).
Их можно группировать, использовать для поисковых запросов и даже запилить собственный TODO-лист.
🧑💻 С помощью быстрых действий для создания понадобится пара секунд и комбинация:
📖 А вот тут можно прочесть об этих и других сценариях использования.
😃 iOS Dev
Закладки в Xcode — новая фича, чтобы быстро перемещаться между важными участками кода (и не только).
Их можно группировать, использовать для поисковых запросов и даже запилить собственный TODO-лист.
Shift ⇧ + Command ⌘ + A
.📖 А вот тут можно прочесть об этих и других сценариях использования.
Please open Telegram to view this post
VIEW IN TELEGRAM
Справочное руководство по использованию SF-символов
😎
Кроме этого, расширяются и возможности работы с ними: заполнение по слоям, управление цветами и возможность добавления анимаций, а также, например, использование их в меню.
📖 В этой статье можно больше узнать о возможностях использования символов в проектах.
😃 iOS Dev
SF Symbols
позволяют отображать огромное количество иконок в наших приложениях, и с каждым годом их становится всё больше. Кроме этого, расширяются и возможности работы с ними: заполнение по слоям, управление цветами и возможность добавления анимаций, а также, например, использование их в меню.
📖 В этой статье можно больше узнать о возможностях использования символов в проектах.
Please open Telegram to view this post
VIEW IN TELEGRAM
Реализация анимированного фона с цветным градиентом в SwiftUI
Анимация c использованием градиентного фона может сделать ваше приложение более динамичным (и интересным).
Один из способов достижения этого эффекта — использование
Но при реализации важно поддерживать баланс между приятной анимацией и той, которая может отвлечь.
В этой серии статей можно познакомиться с различными способами добавления градиента в ваше приложение:
📖 Линейный градиент.
📖 AngularGradient (или же конический градиент) в SwiftUI.
📖 Радиальный градиент.
📖 Реализация анимированного фона.
Пример приложения на Github доступен здесь.
😃 iOS Dev
Анимация c использованием градиентного фона может сделать ваше приложение более динамичным (и интересным).
Один из способов достижения этого эффекта — использование
AngularGradient
. Но при реализации важно поддерживать баланс между приятной анимацией и той, которая может отвлечь.
В этой серии статей можно познакомиться с различными способами добавления градиента в ваше приложение:
📖 Линейный градиент.
📖 AngularGradient (или же конический градиент) в SwiftUI.
📖 Радиальный градиент.
📖 Реализация анимированного фона.
Пример приложения на Github доступен здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему вы должны использовать OSLog в 2023
Xcode 15 (пока что ещё бета) поддерживает структурированное логирование в консоли.
🟡🔴Теперь добавлена подсистема фильтров, и даже появилась возможность выделять предупреждения желтым цветом, а ошибки — красным.
Важно учесть, что такое логирование будет работать только для iOS 17, а на 16 оси логи будут отображаться так же, как и при использовании
📖 Вот тут можно увидеть больше примеров использования и возможность использования
😃 iOS Dev
Xcode 15 (пока что ещё бета) поддерживает структурированное логирование в консоли.
🟡🔴Теперь добавлена подсистема фильтров, и даже появилась возможность выделять предупреждения желтым цветом, а ошибки — красным.
Важно учесть, что такое логирование будет работать только для iOS 17, а на 16 оси логи будут отображаться так же, как и при использовании
print
.📖 Вот тут можно увидеть больше примеров использования и возможность использования
extension
для такого логирования.Please open Telegram to view this post
VIEW IN TELEGRAM
Как реализовать обновление ассетов в приложении в реальном времени
Во многих приложениях требуются вещи, доступные для изменения без создания новой сборки:
🔘 Конфигурации для экспериментальных функций.
🔘 Ссылки, например, на политику конфиденциальности и т.д., которые нужно менять из-за обновления домена.
🔘 Небольшие сниппеты
📖 В этом материале Кшиштоф Заблоцки рассказывает о требованиях, возможных конфигах и подходе к реализации такой логики.
⭐️ Внимание, такой контент обычно платный, но сейчас Кшиштоф решил выложить материал в открытый доступ, поэтому я и публикую его в нашем канале.
😃 iOS Dev
Во многих приложениях требуются вещи, доступные для изменения без создания новой сборки:
Javascript
для определённой логики (такой подход использует New York Times
).📖 В этом материале Кшиштоф Заблоцки рассказывает о требованиях, возможных конфигах и подходе к реализации такой логики.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Важное обновление Xcode 15 beta 6: можно комментировать код даже на одной строке!
🥳 Фича, которую так или иначе многие пытались использовать во всех предыдущих версиях Xcode, наконец реализована!
В релизнотах об этом ни слова, хотя как об этом можно не сообщить!
Теперь можно комментить код даже на одной строке (например, тестовые параметры или что-то в перечислениях).
Пока что только в бете.
😃 iOS Dev
В релизнотах об этом ни слова, хотя как об этом можно не сообщить!
Теперь можно комментить код даже на одной строке (например, тестовые параметры или что-то в перечислениях).
Пока что только в бете.
Please open Telegram to view this post
VIEW IN TELEGRAM
Экскурсия по Xcode Debug Console: описание всех параметров
Все мы знаем, что отладочная консоль Xcode позволяет искать проблемы в приложениях.
⭐️ В Xcode 15 появилась новая версия консоли с улучшенными возможностями журналирования.
Каждый лог-левел будет отображаться разным цветом, а расширенные фильтры позволят показать только нужное.
📖 Вот тут есть хороший разбор новых возможностей для просмотра метаданных и фильтрации.
😃 iOS Dev
Все мы знаем, что отладочная консоль Xcode позволяет искать проблемы в приложениях.
Каждый лог-левел будет отображаться разным цветом, а расширенные фильтры позволят показать только нужное.
📖 Вот тут есть хороший разбор новых возможностей для просмотра метаданных и фильтрации.
Please open Telegram to view this post
VIEW IN TELEGRAM
5 шагов для поиска медленного кода с Xcode Time Profiler
При старте использования
😎 Один из подходов — использовать пять простых шагов для выявления «узких мест» в коде.
📖 В этом материале на примере описаны этапы, которые можно использовать для поиска проблем в приложении.
😃 iOS Dev
При старте использования
Time Profiler
он может казаться перегруженным из-за огромного количества данных. 📖 В этом материале на примере описаны этапы, которые можно использовать для поиска проблем в приложении.
Please open Telegram to view this post
VIEW IN TELEGRAM
Так когда всё-таки действительно нужно использовать [weak self]?
Чтобы ответить на этот вопрос, в любом случае необходимы примеры, но, как обычно в нашей разработке,
Например, последние версии Swift заставили посмотреть на использование под иным углом.
📖 В своём материале Винсент приводит несколько примеров, и объясняет, когда
📖 Кстати, вот тут можно узнать, какие из сценариев могут привести к утечкам памяти.
😃 iOS Dev
Чтобы ответить на этот вопрос, в любом случае необходимы примеры, но, как обычно в нашей разработке,
it depends
.Например, последние версии Swift заставили посмотреть на использование под иным углом.
📖 В своём материале Винсент приводит несколько примеров, и объясняет, когда
[weak self]
необходим, и когда это излишне, как, например, в случае с .map()
.📖 Кстати, вот тут можно узнать, какие из сценариев могут привести к утечкам памяти.
Please open Telegram to view this post
VIEW IN TELEGRAM
Ошибки, которых следует избегать при внедрении TipKit в приложение
➡ ️ Новый фреймворк — отличный помощник для выделения интересных или пока неиспользуемых пользователями фич.
Его просто добавить, управлять и в целом использовать в своих проектах.
Несмотря на это, во всём нужно знать меру.
📖 В этом материале разбираются ошибки, которые можно допустить при работе с
😃 iOS Dev
Его просто добавить, управлять и в целом использовать в своих проектах.
Несмотря на это, во всём нужно знать меру.
📖 В этом материале разбираются ошибки, которые можно допустить при работе с
TipKit
.Please open Telegram to view this post
VIEW IN TELEGRAM
Настройка iOS-приложения для поддержки push-уведомлений
Добавление возможности работы с пушами в iOS достаточно сложный процесс, включающий в себя несколько этапов.
⏩ С опытом, конечно, всё станет проще, но если вы делаете это в первый раз, то будет полезно посмотреть несложную инструкцию.
📖 В этой статье описаны необходимые настройки и пример использования новой Push Notification Console.
😃 iOS Dev
Добавление возможности работы с пушами в iOS достаточно сложный процесс, включающий в себя несколько этапов.
📖 В этой статье описаны необходимые настройки и пример использования новой Push Notification Console.
Please open Telegram to view this post
VIEW IN TELEGRAM
Одно из любимых приложений, которое я поддерживаю продолжительное время (уже более трёх лет) — трекер сбережений/долгов/целей.
Раз за разом я стараюсь прокачивать его, используя фишки Apple. Иногда это виджеты, иногда — приложение для часов.
Помню, как запилил туда кросс-интеграцию европейских банков для сверки курсов (и авто-конвертации валют в выбранную).
Так вот, сегодня один из тех дней, когда я выкатил большое масштабное обновление на ProductHunt.
👍 И рассчитываю на вашу поддержку там (комментарий или просто upvote было бы очень круто).
➡️ Помочь своим голосом можно здесь.
😃 iOS Dev
Раз за разом я стараюсь прокачивать его, используя фишки Apple. Иногда это виджеты, иногда — приложение для часов.
Помню, как запилил туда кросс-интеграцию европейских банков для сверки курсов (и авто-конвертации валют в выбранную).
Так вот, сегодня один из тех дней, когда я выкатил большое масштабное обновление на ProductHunt.
Please open Telegram to view this post
VIEW IN TELEGRAM
Исследование MeasurementFormatter и пример его применения
Иногда из-за разниц подходов к измерениям в метрической и, например, американской системах код может выглядеть не очень приятно.
Тогда на помощь может прийти
📖 Вот тут есть хорошее объяснение, когда его лучше использовать, и приводится пример для разных локалей.
😃 iOS Dev
Иногда из-за разниц подходов к измерениям в метрической и, например, американской системах код может выглядеть не очень приятно.
Тогда на помощь может прийти
MeasurementFormatter
.📖 Вот тут есть хорошее объяснение, когда его лучше использовать, и приводится пример для разных локалей.
Please open Telegram to view this post
VIEW IN TELEGRAM
Загляните в канал Романа, который прошел путь от iOS разработчика до топ-менеджера международной компании.
Автор пишет о создании пет-проектов, управлении командой, iOS разработке, переходе из инженера в менеджеры.
Интересные статьи:
Хайп на алгоритмах
Поиск ниши для приложения
Как развить критический взгляд
IT это легко или сложно?
👉Подробнее в канале iOS Enjoyer
Автор пишет о создании пет-проектов, управлении командой, iOS разработке, переходе из инженера в менеджеры.
Интересные статьи:
Хайп на алгоритмах
Поиск ниши для приложения
Как развить критический взгляд
IT это легко или сложно?
👉Подробнее в канале iOS Enjoyer
Telegram
Роман Галь – Работа в IT
Управление командой, составление резюме, переход из инженера в менеджеры, создание пет-проектов
Предложить статью или новость: @iOSEnjoyerBot
Автор: @roman_mobile
Предложить статью или новость: @iOSEnjoyerBot
Автор: @roman_mobile