ch
Feedback
iOS Dev

iOS Dev

前往频道在 Telegram

👨‍💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift

显示更多
7 876
订阅者
-424 小时
+27 天
-5430 天
帖子存档
iOS Dev
7 876
Используете UserDefaults? Начиная с осени нужно будет указать причину Начиная с осени текущего года при загрузке в App Store Connect при использовании API (в том числе из SDK сторонних разработчиков), будет соответствующее уведомление. А начиная с весны 2024 года нам нужно будет явно указывать причину, как именно приложение использует API. Для категорий появится ключ: NSPrivacyAccessedAPIType, а для значений нужно указать NSPrivacyAccessedAPITypeReasons. 🥺 И вот что интересно, среди них: File timestamp APIs (в том чиле creationDate/modificationDate, которые многие используют для кэша), Disk space APIs (например, systemFreeSize) и UserDefaults. Всё это нужно для предотвращения фингерпринтинга (когда пользователя пытаются идентифицировать по разной комбинации параметров). Как заметили в одном чате, такими темпами скоро надо будет указывать причину выбора названий переменных. @iOS Dev

iOS Dev
7 876
Как использовать Stable Diffusion для генерации изображений с использованием Swift CLI Для iOS-разработчика Stable Diffusion
Как использовать Stable Diffusion для генерации изображений с использованием Swift CLI Для iOS-разработчика Stable Diffusion может оказаться весьма полезным инструментом для генерации контента. Благодаря оптимизациям для Core ML, Stable Diffusion можно использовать на устройствах Apple Silicon. И, что особенно важно, модель хранится локально на устройстве, поэтому пользователям не требуется онлайн-подключение. 📖 В этом руководстве можно узнать, как воспользоваться командной строкой (CLI) Swift для создания такого контента. 👨‍💻 На всякий случай, поделюсь неплохим гайдом по описанию промптов. @iOS Dev

iOS Dev
7 876
Подборка паттернов проектирования, реализованных в Swift 5.0 Репозиторий с 14 (!) тысячами звёзд на Github на примерах показы
Подборка паттернов проектирования, реализованных в Swift 5.0 Репозиторий с 14 (!) тысячами звёзд на Github на примерах показывает сразу несколько десятков шаблонов, сгруппированных в три группы: поведенческие, творческие и структурные. 📖 Ссылка на примеры здесь. 📖 Кстати, вот тут есть проект с использованием clean architecture и MVVM. @iOS Dev

iOS Dev
7 876
Использование общих зависимостей с помощью SPM Иногда мы можем столкнуться с дублированием зависимостей, или в крайне редких
Использование общих зависимостей с помощью SPM Иногда мы можем столкнуться с дублированием зависимостей, или в крайне редких случаях сложностями с версионированием, что может стать проблемой. 👩‍🎓 Хотя в SPM нет базового решения для таких случаев, можно использовать обходной путь. Ключевой момент заключается в том, что, объявив пакет как зависимость в Package.swift, вы можете импортировать все его зависимости. 📖 В этой статье автор разбирает необходимые шаги, а здесь можно посмотреть пример проекта. @iOS Dev

iOS Dev
7 876
SwifterSwift — это коллекция из более чем 500 нативных extensions Swift с удобными методами, синтаксическим сахаром и улучшен
SwifterSwift — это коллекция из более чем 500 нативных extensions Swift с удобными методами, синтаксическим сахаром и улучшениями производительности. 🤩 А для более наглядного поиска можно проверить Examples.playground. 🛠 SwifterSwift на Github. @iOS Dev

iOS Dev
7 876
Серия из 8 статей о работе с CloudKit на примере приложения Shopping UK 🧑‍💻 Stuart Wheelwright создаёт и поддерживает это п
Серия из 8 статей о работе с CloudKit на примере приложения Shopping UK 🧑‍💻 Stuart Wheelwright создаёт и поддерживает это приложение в течение 10 лет (рейтинг 4,8 в App Store, более 45 000 ежемесячных пользователей). При этом средний доход приложения от 1000 до 1500 фунтов стерлингов в месяц. Помимо разбора CloudKit он рассказывает и о том, как пришёл к созданию продукта, какие сложности преодолел и с помощью каких инструментов поддерживает Shopping UK. 📖 Большой разбор о пути приложения и внедрения CloudKit можно прочесть здесь. @iOS Dev

iOS Dev
7 876
Логирование в iOS: обработка транзакций с использованием паттерна «Декоратор» Система логирования — одна из частых задач в ра
Логирование в iOS: обработка транзакций с использованием паттерна «Декоратор» Система логирования — одна из частых задач в разработке. Например, при работе над банковским приложением важно учитывать время транзакций для увеличения производительности. 📖 В этом примере автор реализует такую систему. @iOS Dev

iOS Dev
7 876
Реализация callback-подхода с использованием AsyncStream в Swift До Swift Concurrency мы могли использовать замыкания, наприм
Реализация callback-подхода с использованием AsyncStream в Swift До Swift Concurrency мы могли использовать замыкания, например, для информирования об определенных событиях во время асинхронных операций. 👨‍💻 Но с ввведением AsyncStream этот подход можно прокачать с помощью более простого синтаксиса async/await. 📖 В этом материале автор делится таким вариантом использования на примере приложения, имитирующего скачивание файлов. @iOS Dev

iOS Dev
7 876
Как отключить кастомные клавиатуры в вашем приложении 🙅‍♂️Запрет нестандартных клавиатур может быть одним из требований безо
Как отключить кастомные клавиатуры в вашем приложении 🙅‍♂️Запрет нестандартных клавиатур может быть одним из требований безопасности для корпоративных продуктов. Конечно, чаще на Android, чем на iOS, но в любом случае неплохо пополнить свою базу знаний. Так как дополнительная клавиатура это Extension, то с помощью проверки в shouldAllowExtensionPointIdentifier легко можно проверить дать/запретить доступ для таких клавиатур. 📖 А вот здесь можно посмотреть на пример такого подхода. @iOS Dev

iOS Dev
7 876
Первая попытка проектирования приложений для visionOS 📖 Создатель приложения Widgetsmith (более 100 кк скачиваний) делится с
Первая попытка проектирования приложений для visionOS 📖 Создатель приложения Widgetsmith (более 100 кк скачиваний) делится своим опытом поддержки visionOS для своего приложения и рассказывает про этапы разбора ошибок компилятора и изменения интерфейса в целом. В частности, рассматриваются не только варианты редизайна, но и способы добавления различных эффектов (мерцания и так далее) на базе уже существующего проекта. 📖 Прочитать про опыт адаптации проекта для visionOS можно здесь. @iOS Dev

iOS Dev
7 876
Полезные iOS-инструменты для отладки приложений Владение навыками отладки приложений входит в топ самых полезных вещей для лю
Полезные iOS-инструменты для отладки приложений Владение навыками отладки приложений входит в топ самых полезных вещей для любого разработчика (не только мобильного). Существует множество различных способов найти проблемы в приложениях, но иногда для поиска самых неприятных багов приходится использовать целую комбинацию вспомогательных средств. 📖 Альберт из компании SimbirSoft собрал в одну статью самые популярные из этих инструментов. @iOS Dev

iOS Dev
7 876
5 вещей, которые вы могли не знать о KeyPaths KeyPath — одна из часто используемых фишек в Swift. Vincent Pradeilles попробовал разобраться, как именно можно использовать KeyPath в своих проектах. В частности, как простым способом можно написать типобезопасный синтаксис предиката. 📖 А вот здесь весь разбор пяти возможных применений. 📖 Кстати, про KeyPathComparator можно прочитать тут. @iOS Dev

iOS Dev
7 876
Реализация темного режима c помощью использования dynamicProvider Внедрение поддержки новой темы может быть довольно утомител
Реализация темного режима c помощью использования dynamicProvider Внедрение поддержки новой темы может быть довольно утомительно. Одним из способов, который может помочь в реализации — использование dynamicProvider для UIColor (доступно с 13 оси). 📖 Про детали и обработку дополнительных кейсов можно прочитать здесь. @iOS Dev

iOS Dev
7 876
23 стратегии эффективного использования массивов в Swift 🔑 Эффективное использование массивов является ключом к написанию вы
23 стратегии эффективного использования массивов в Swift 🔑 Эффективное использование массивов является ключом к написанию высокопроизводительного кода. 📖 В этой статье рассматриваются 23 способа, которые вы можете использовать при работе с массивами. 📖 Кстати, для сортировки массивов строк можно ознакомиться с этим постом. @iOS Dev

iOS Dev
7 876
Масштабное руководство по использованию SwiftData В нем рассматриваются основополагающие концепции SwiftData, архитектурный д
Масштабное руководство по использованию SwiftData В нем рассматриваются основополагающие концепции SwiftData, архитектурный дизайн, возможности миграции и многое другое. 📖 Этот материал состоит из нескольких разделов, каждый из которых посвящен различным аспектам фреймворка SwiftData. 📖 Будет полезно дополнить этой статьёй о вопросах и ответах, связанных с SwiftData и CoreData. @iOS Dev

iOS Dev
7 876
🥳 5 000 разработчиков в канале! Информация — это кровь, метаболизм современного мира (Филипп К. Дик). Вот уже больше года я активно веду этот канал. Ищу полезный контент, делюсь критическим взглядом и поднимаю важные вопросы необходимости базы, алгоритмов и их влияния на нашу с вами работу. Фильтрация поступающей лавины новостей, нововведений и поиск ответов на сложные вопросы требуют времени. Конечно, в 2023 году нам доступно огромное количество каналов, в которых можно черпать информацию. Крупнее, чем @iOSDev, с большими ресурсами или даже командой авторов, и это здорово! Правда, важно не только расширять арсенал инструментов, но и смотреть на разработку в целом: не только писать код, но и вырабатывать навыки решения проблем. Развивать технический ресурс — сложно по многим причинам (узкий контент и непростые темы, требующие погружения). И мне невероятно приятно, что здесь столько читателей. ❤‍🔥Спасибо, что читаете этот канал. @iOS Devа ещё я решился на небольшой подарок, и купил соответствующий юзернейм (можете посмотреть в настройках канала). Кстати, такие эффекты гифки можно сделать в Keynote 🤗

iOS Dev
7 876
Погружаемся в Observation: введение, принципы и примеры использования Новый фреймворк Observation создали с целью уменьшить ненужные обновления во вьюхах SwiftUI, тем самым повышая производительность приложений. Он представляет следующие возможности: 1️⃣ Маркировка типа как observable (наблюдаемого). 2️⃣ Отслеживание изменений в экземпляре такого типа. 3️⃣ Наблюдение и использование этих изменений в другом месте, например, в пользовательском интерфейсе приложения. Для более детального знакомства я выбрал две обширных статьи с примерами: 📖 Обзорный материал, для чего необходим этот фреймворк: как объявлять оъекты Observable, разбор решаемых проблем с производительностью и примеры. 📖 Гайд, как перенести ObservableObject в Observable. @iOS Dev

iOS Dev
7 876
Мой опыт разработки пет-проектов, только правда Возможно, вы читали пост, в котором я писал, что создаю приложения с 2011 года. За это время до стора добрались три десятка, из которых так или иначе до сих пор там примерно двадцать. Около половины из них на Objective-c, другая же часть на Swift, а виджеты/приложения для часов уже на SwiftUI. Ха-ха, а ещё у меня есть одно на Kotlin. Хочу поделиться с вами своими мыслями про то, для чего это всё было (и будет). 🔘 Доведённый до конца проект это важно. На работе встречаются сложные задачи, требующие усидчивости, нескольких подходов, иногда даже пересмотра таски под другим углом. 🔘 Мои приложения — не основной источник дохода. Скорее рассматриваю их как способ узнать что-то новое, попробовать какие-то архитектуры, или, например, попытаться написать проект только c использованием фреймворка Texture. 🔘 Вопросы ревьюеров помогут вам аргументировать свою позицию и отстаивать свои решения. Хотя периодически с ними нужно будет соглашаться 😎. 🔘 Иногда что-то даже может выстрелить. Когда-то у меня был клиент для ВК, а сам ВК тогда выпилили за авторские права на музыку, и в течение нескольких дней случилось около 50 000 установок (для меня это много). 🔘 Чаще пользователи молчат, когда их всё устраивает. Но как только что-то пойдёт не так, будьте готовы получить десяток гневных отзывов (всё, как в обычной жизни). На работе ведь тоже иногда случаются сложности при обновлении, верно? 🔘 Ваши проекты — это один из лучших способов рассказать (и показать), что вы умеете. Но, конечно, далеко не единственный. 🔘 Вложенное время, силы и деньги не окупятся напрямую. Скорее всего, никогда, будьте готовы к этому. Фактически, вам может повезти занять узкую нишу либо ресурсы позволят подключить продвижение, тогда шансов будет больше. 🔘 Когда начинаю новый проект, то стараюсь фокусироваться на одной функции. Для этого можно представить, что это фича, которую вам нужно реализовать в спринте. 🔘 Я учусь. В том числе и создавать дизайн, даже участвовал в паре конкурсов скетча, но безрезультатно. Для чего? Когда вы пробуете сделать правильно и по гайдлайнам, вы сможете лучше понимать дизайнеров-коллег и их мысли, хотя это и не всегда получается. 🔘 Про аудиторию. У меня есть приложение, которое не пользуется особым успехом (про составление слов), но там есть один пользователь, который играет в него уже 5 лет, и периодически пишет отзывы. Это невероятно круто, когда ваше приложение кому-то интересно. К сравнению, нишевый знаток скачали около 40к человек за всё время, и периодически на разных турнирах я встречаю пользователей, это забавно 🙂 В целом было множество разных ситуаций, и пусть никаких ощутимых средств приложения мне так и не принесли, но сказать, что я жалею об этом, будет преувеличением. Пробуйте. Но всегда старайтесь найти баланс между личным временем, творчеством и перфекционизмом. @iOS Dev

iOS Dev
7 876
Swift OpenAPI Generator: генерация кода для клиента и сервера с помощью инструмента Apple Swift OpenAPI Generator от Apple —
Swift OpenAPI Generator: генерация кода для клиента и сервера с помощью инструмента Apple Swift OpenAPI Generator от Apple — это плагин SwiftPM, в который можно передать OpenAPI-док и сгенерить либо клиентский код для выполнения HTTP-запросов, либо код сервера для обработки этих вызовов. Проект ещё на стадии разработки, но, несмотря на то, что до сих пор нет даже версии 1.0, некоторые опенсорс-решения уже стопнули разработку своих репозиториев в пользу эпловского продукта. 📖 В этом материале Марко Эйдингер показывает пример использования для двух важных этапов: создания клиентской либы, а также её внедрения в приложение. 🛠 Сам репозиторий на github. @iOS Dev

iOS Dev
7 876
Зарплаты мобильных разработчиков по данным Хабр Карьера Появились результаты нового исследования, в которых есть распределени
Зарплаты мобильных разработчиков по данным Хабр Карьера Появились результаты нового исследования, в которых есть распределение вакансий и по квалификации. Самые популярные разработчики мобильных приложений — мидлы и сеньоры, доли вакансий для них одинаковые — по 45,2%. Реже ищут лидов — доля 7,1%. Для джунов вакансий меньше всего: 2,5%. 💰По цифрам, которые оставили сами разработчики, можно сделать выводы, что джуны в среднем получают 110 000 ₽, а лиды — 430 000 ₽. @iOS Dev