23 стратегии эффективного использования массивов в Swift
🔑 Эффективное использование массивов является ключом к написанию высокопроизводительного кода.
📖 В этой статье рассматриваются 23 способа, которые вы можете использовать при работе с массивами.
📖 Кстати, для сортировки массивов строк можно ознакомиться с этим постом.
😃 iOS Dev
🔑 Эффективное использование массивов является ключом к написанию высокопроизводительного кода.
📖 В этой статье рассматриваются 23 способа, которые вы можете использовать при работе с массивами.
📖 Кстати, для сортировки массивов строк можно ознакомиться с этим постом.
Please open Telegram to view this post
VIEW IN TELEGRAM
Реализация темного режима c помощью использования dynamicProvider
Внедрение поддержки новой темы может быть довольно утомительно. Одним из способов, который может помочь в реализации — использование
📖 Про детали и обработку дополнительных кейсов можно прочитать здесь.
😃 iOS Dev
Внедрение поддержки новой темы может быть довольно утомительно. Одним из способов, который может помочь в реализации — использование
dynamicProvider
для UIColor (доступно с 13 оси).📖 Про детали и обработку дополнительных кейсов можно прочитать здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
5 вещей, которые вы могли не знать о KeyPaths
Vincent Pradeilles попробовал разобраться, как именно можно использовать KeyPath в своих проектах.
В частности, как простым способом можно написать типобезопасный синтаксис предиката.
📖 А вот здесь весь разбор пяти возможных применений.
📖 Кстати, про KeyPathComparator можно прочитать тут.
😃 iOS Dev
KeyPath
— одна из часто используемых фишек в Swift.Vincent Pradeilles попробовал разобраться, как именно можно использовать KeyPath в своих проектах.
В частности, как простым способом можно написать типобезопасный синтаксис предиката.
📖 А вот здесь весь разбор пяти возможных применений.
📖 Кстати, про KeyPathComparator можно прочитать тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
Полезные iOS-инструменты для отладки приложений
Владение навыками отладки приложений входит в топ самых полезных вещей для любого разработчика (не только мобильного).
Существует множество различных способов найти проблемы в приложениях, но иногда для поиска самых неприятных багов приходится использовать целую комбинацию вспомогательных средств.
📖 Альберт из компании SimbirSoft собрал в одну статью самые популярные из этих инструментов.
😃 iOS Dev
Владение навыками отладки приложений входит в топ самых полезных вещей для любого разработчика (не только мобильного).
Существует множество различных способов найти проблемы в приложениях, но иногда для поиска самых неприятных багов приходится использовать целую комбинацию вспомогательных средств.
📖 Альберт из компании SimbirSoft собрал в одну статью самые популярные из этих инструментов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Первая попытка проектирования приложений для visionOS
📖 Создатель приложения Widgetsmith (более 100 кк скачиваний) делится своим опытом поддержки visionOS для своего приложения и рассказывает про этапы разбора ошибок компилятора и изменения интерфейса в целом.
В частности, рассматриваются не только варианты редизайна, но и способы добавления различных эффектов (мерцания и так далее) на базе уже существующего проекта.
📖 Прочитать про опыт адаптации проекта для visionOS можно здесь.
😃 iOS Dev
В частности, рассматриваются не только варианты редизайна, но и способы добавления различных эффектов (мерцания и так далее) на базе уже существующего проекта.
📖 Прочитать про опыт адаптации проекта для visionOS можно здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как отключить кастомные клавиатуры в вашем приложении
🙅♂️Запрет нестандартных клавиатур может быть одним из требований безопасности для корпоративных продуктов.
Конечно, чаще на Android, чем на iOS, но в любом случае неплохо пополнить свою базу знаний.
Так как дополнительная клавиатура это
📖 А вот здесь можно посмотреть на пример такого подхода.
😃 iOS Dev
🙅♂️Запрет нестандартных клавиатур может быть одним из требований безопасности для корпоративных продуктов.
Конечно, чаще на Android, чем на iOS, но в любом случае неплохо пополнить свою базу знаний.
Так как дополнительная клавиатура это
Extension
, то с помощью проверки в shouldAllowExtensionPointIdentifier
легко можно проверить дать/запретить доступ для таких клавиатур.📖 А вот здесь можно посмотреть на пример такого подхода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Реализация callback-подхода с использованием AsyncStream в Swift
До
👨💻 Но с ввведением
📖 В этом материале автор делится таким вариантом использования на примере приложения, имитирующего скачивание файлов.
😃 iOS Dev
До
Swift Concurrency
мы могли использовать замыкания, например, для информирования об определенных событиях во время асинхронных операций. AsyncStream
этот подход можно прокачать с помощью более простого синтаксиса async/await
.📖 В этом материале автор делится таким вариантом использования на примере приложения, имитирующего скачивание файлов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Логирование в iOS: обработка транзакций с использованием паттерна «Декоратор»
Система логирования — одна из частых задач в разработке.
Например, при работе над банковским приложением важно учитывать время транзакций для увеличения производительности.
📖 В этом примере автор реализует такую систему.
😃 iOS Dev
Система логирования — одна из частых задач в разработке.
Например, при работе над банковским приложением важно учитывать время транзакций для увеличения производительности.
📖 В этом примере автор реализует такую систему.
Please open Telegram to view this post
VIEW IN TELEGRAM
Серия из 8 статей о работе с CloudKit на примере приложения Shopping UK
🧑💻 Стюарт Вилрайт создаёт и поддерживает это приложение в течение 10 лет (рейтинг 4,8 в App Store, более 45 000 ежемесячных пользователей). При этом средний доход приложения от 1000 до 1500 фунтов стерлингов в месяц.
Помимо разбора CloudKit он рассказывает и о том, как пришёл к созданию продукта, какие сложности преодолел и с помощью каких инструментов поддерживает Shopping UK.
📖 Большой разбор о пути приложения и внедрения CloudKit можно прочесть здесь:
1️⃣ Введение.
2️⃣ Обзор основных концепций CloudKit.
3️⃣ Добавление, обновление и удаление записей.
4️⃣ Общий доступ и принципы работы.
5️⃣ Совместный шаринг.
6️⃣ Синхронизация данных.
7️⃣ Работа в фоне.
8️⃣ Когда что-то идет не так.
😃 iOS Dev
Помимо разбора CloudKit он рассказывает и о том, как пришёл к созданию продукта, какие сложности преодолел и с помощью каких инструментов поддерживает Shopping UK.
📖 Большой разбор о пути приложения и внедрения CloudKit можно прочесть здесь:
1️⃣ Введение.
2️⃣ Обзор основных концепций CloudKit.
3️⃣ Добавление, обновление и удаление записей.
4️⃣ Общий доступ и принципы работы.
5️⃣ Совместный шаринг.
6️⃣ Синхронизация данных.
7️⃣ Работа в фоне.
8️⃣ Когда что-то идет не так.
Please open Telegram to view this post
VIEW IN TELEGRAM
SwifterSwift — это коллекция из более чем 500 нативных
🤩 А для более наглядного поиска можно проверить
🛠 SwifterSwift на GitHub.
😃 iOS Dev
extensions
Swift с удобными методами, синтаксическим сахаром и улучшениями производительности.Examples.playground
.🛠 SwifterSwift на GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
Использование общих зависимостей с помощью 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