fa
Feedback
iOS Dev

iOS Dev

رفتن به کانال در Telegram

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

نمایش بیشتر
8 002
مشترکین
+424 ساعت
+427 روز
+8130 روز
آرشیو پست ها
iOS Dev
8 003
ReviewBuddy — приложение для трекинга оценок в AppStore или как сменить регион, не внося изменения в Apple ID Время от времен
ReviewBuddy — приложение для трекинга оценок в AppStore или как сменить регион, не внося изменения в Apple ID Время от времени я стараюсь облегчить жизнь в разработке и для своих проектов, и для целей компании (раз, два). Иногда необходимо видеть, как приложение выглядит в том или ином аппсторе, но нативной опции для переключения у нас нет (либо можно чекать в браузере каждый раз через несколько действий). Поэтому около месяца назад я решил потратить выходные и часть отпуска на исследование возможностей, как же можно переключать аппстор (и вообще, что на это говорит Apple, спойлер — можно, но со скрипом). Наверняка, многие знают про опцию поиска приложений (и способ для проверки доступности новой версии через https://itunes.apple.com/search). Но ведь её можно использовать и для поиска оценок/формирования средневзвешенной. Поэтому я внедрил несложный механизм запросов с помощью уже не такого новомодного async/await и написал алгоритм трекинга оценок для любого приложения в аппсторе. Бонусом впилил историю, просмотр отзывов (а отвечать на них можно в Starly), копирование айдишников и урлов и возможность шаринга оценок по любому приложению. А вот с переключением аппсторов вышло интереснее (для этого можно использовать кастомные схемы, если кому интересно — покопайте вот тут) и с помощью этого можно переключать дефолтный стор (но, конечно, без возможности скачивания приложений или покупок). Цель — для девелоперов чекнуть их (и не только их приложения) в других странах. В итоге поставленных целей удалось добиться, для хранения истории юзал SwiftData, а самый сложный момент — было биться с ревью-командой, в итоге потратил на переписку около месяца, чтобы показать, как именно запрашиваются рейтинги и что происходит внутри. 🔗Скачать приложение можно здесь. 🎆 Поддержать — вот тут. 💸 Промокод (для инди-разработчиков и тех, кому нужно — можно использовать этот на фулл-версию на год). 😃 iOS Dev

iOS Dev
8 003
Расширенный поиск с помощью AI по сессиям WWDC 🤩 Неплохая идея (автор - Мэтт Спир), с помощью которой можно сразу получить с
Расширенный поиск с помощью AI по сессиям WWDC 🤩 Неплохая идея (автор - Мэтт Спир), с помощью которой можно сразу получить саммари по фичам и посмотреть доступные сессии по теме. 📖 А вот тут можно посмотреть на подборку лучших сессий с WWDC24 (Swift, Perfomance, Debugging). 😃 iOS Dev

iOS Dev
8 003
Утечка памяти: детектив в Xcode Недавно Джейкоб Бартлетт столкнулся с забавной ошибкой, связанной с диплинками. 🔎Суть пробле
Утечка памяти: детектив в Xcode Недавно Джейкоб Бартлетт столкнулся с забавной ошибкой, связанной с диплинками. 🔎Суть проблемы была в том, что при нажатии на push-уведомление некоторые пользователи сообщали, что экран пушился дважды (приложение открывалось, но сам переход дублировался). 📖 В итоге разработчик провел целое расследование, а к чему оно привело, можно прочитать тут. Спойлер: для поиска пригодится этот пост. 😃 iOS Dev

iOS Dev
8 003
Подборка докладов с iOS Conf SG 2024 🤩 Наш читатель посетил iOS-конференцию в Сингапуре и поделился своим топом лучших докла
Подборка докладов с iOS Conf SG 2024 🤩 Наш читатель посетил iOS-конференцию в Сингапуре и поделился своим топом лучших докладов: 📺 Understanding our users – полезное видео, в котором разбираются основы того, что спрашивать у пользователей, чтобы развивать продукт в нужном направлении. 📺 Swift beyond Apple platforms — о возможностях и проблемах использования Swift от веб-разработки до работы во embedded-системах. 📺 The Swift Actor Pitfall: Understanding and Managing Reentrancy – разбор неочевидной и простой ошибки, связанной со swift concurrency. Нельзя пройти стороной и миграцию кодовой базы на async/await. 🔗 А весь плейлист с докладами доступен вот тут. Кстати, в канале есть обзоры и других конференций: 🔗 Подборка докладов с конференции Swift Craft 🔗 Доклады с конференции try! Swift Tokyo 2024 😃 iOS Dev

iOS Dev
8 003
Приглашаем на Mobile PeerLab #2 — камерную встречу для мобильных разработчиков 10 октября в Москве во второй раз пройдет Peer
Приглашаем на Mobile PeerLab #2 — камерную встречу для мобильных разработчиков 10 октября в Москве во второй раз пройдет PeerLab от экспертов Райдтеха Яндекс Go. Специалисты разберут кейсы, которые предложат участники: поговорят о DI-архитектуре, легаси и скорости сборки, сравнят KMP и Flutter, объяснят, чем отличаются техлиды от фичалидов, и поделятся советами о тестировании фичей. После разбора кейсов гостей ждет afterparty, feature dev консультация и активности в реальной качалке — будем тренировать прогерские мышцы! Реальные кейсы и ответы экспертов Яндекса на ваши вопросы о мобильной разработке — регистрируйтесь и зовите коллег! Обратите внимание, количество мест ограничено. После регистрации обязательно дождитесь подтверждения заявки.

iOS Dev
8 003
Реализация загрузчика файлов в SwiftUI Вполне вероятно, что вам приходилось решать задачу отслеживания прогресса загрузки нес
Реализация загрузчика файлов в SwiftUI Вполне вероятно, что вам приходилось решать задачу отслеживания прогресса загрузки нескольких файлов. 📖 Маттео Манфердини в своём блоге написал огромный материал о своём подходе к созданию загрузчика файлов (и дополнил свою прошлую реализацию). Статья разбита на несколько частей: 1️⃣ Загрузка файлов и как трекать прогресс скачивания. 2️⃣ Реализация архитектуры для загрузки нескольких файлов. 3️⃣ Трекаем прогресс с помощью Swift Concurrency. 4️⃣ Создание интерфейса SwiftUI для управления загрузкой. 🛠 Код проекта доступен на github 😃 iOS Dev

iOS Dev
8 003
Как работать с MeshGradient в iOS 18 В iOS 18 появилась возможность создавать mesh-градиенты. В целом, это лёгкий в использов
Как работать с MeshGradient в iOS 18 В iOS 18 появилась возможность создавать mesh-градиенты. В целом, это лёгкий в использовании способ создания необычных эффектов. Например, вы можете посмотреть на мою реализацию или на вариант создания анимации в стиле Siri. 📖 В этом посте довольно подробно описано, что из себя представляют mesh-градиенты, как их можно использовать и анимировать, чтобы они выглядели действительно приятно. 😃 iOS Dev

iOS Dev
8 003
Как делать великолепные приложения Я очень редко делюсь роликами c интервью (только если речь не про персон калибра Барбары Лисков). В канале очень много примеров анимаций, поэтому пройти мимо автора вот этого протипа (и этого, и многих других) нельзя. 📺 В этом видео Джанум делится многими деталями (и своим опытом в Apple, Netflix, Airbnb), в том числе: - Уровни анимации. - Почему шейдеры имеют большое значение (и как они работают) - Как реализована анимация загрузки для Arc. - Про собственный анимационный движок Wave (есть обзорный пост в канале). - Изучение принципов флюидного дизайна при работе на iPad и многим другим. Рекомендую посмотреть не только разработчикам, но и поделиться с дизайнерами подходами Джанума к созданию по-настоящему уникальных анимаций. ✅Кстати, вот тут есть целый раздел, в котором разобраны необычные и сложные анимации на реальных примерах. 😃 iOS Dev

iOS Dev
8 003
Реализация перетаскивания элементов с помощью жестов в SwiftUI 📖 Несложный пример, в котором показан один из возможных подходов, как работать с перетаскиванием элементов интерфейса с помощью жестов в SwiftUI. 🛠 Само решение доступно на github. 😃 iOS Dev

iOS Dev
8 003
Как вы относитесь к перфоманс ревью?
Anonymous voting

iOS Dev
8 003
Создание крупномасштабных приложений на SwiftUI: Руководство по модульной архитектуре Архитектура — это всегда тема для жарки
Создание крупномасштабных приложений на SwiftUI: Руководство по модульной архитектуре Архитектура — это всегда тема для жарких споров, особенно когда у нас есть много вариантов. В фундаментальной статье вы сможете найти: 🔗 Что представляет собой модульная архитектура? 🔗 Какие могут быть проблемы с MVVM со SwiftUI 🔗 Как можно понимать паттерн MV 🔗 Screens vs Views (плюсы и минусы наименований) 🔗 Примеры создания и использования моделей 🔗 View-специализированная логика 🔗 Валидация 🔗 Навигацияпример с TabView) 🔗 Отображение ошибок 🔗 Группировка событий 🔗 Форматирование 🔗 Тестирование В канале уже были примеры и других реализаций, напомню про эти посты: 1️⃣ Реализация модульной архитектуры на примере Spotify 2️⃣ Опенсорсный клиент на SwiftUI для Mastodon: демонстрация реализованных методов и фич 3️⃣ Пример реализации модульной архитектуры в компании Just Eat И, конечно, если вы хотите найти ещё больше информации, примеров и разборов конкретных архитектур, подписывайтесь: 💰 Boosty • 💬 Telegram 😃 iOS Dev

iOS Dev
8 003
AVAudioEffectNode: создание низкоуровневых аудиоэффектов в Swift При создании аудиоэффектов можно использовать Audio Units. И
AVAudioEffectNode: создание низкоуровневых аудиоэффектов в Swift При создании аудиоэффектов можно использовать Audio Units. И хотя Apple предоставляет примеры того, как это сделать, они могут быть сложными для новичков. Следуя аналогичному подходу из либы Novocaine, автор делится примером удобного API для создания аудиоэффектов в Swift с помощью AVFoundation. 📖 Исследование доступно здесь, а код — вот тут. ✅Ещё больше эффектов, анимаций и разборов кода вы можете получить здесь. 😃 iOS Dev

iOS Dev
8 003
Что тормозит карьеру в разработке? На митапе от «Лаборатории Касперского» эксперты в мобильной разработке поделятся реальными
Что тормозит карьеру в разработке? На митапе от «Лаборатории Касперского» эксперты в мобильной разработке поделятся реальными примерами карьерных ошибок и подскажут, как их избежать. Вместе с профессионалами вы узнаете, что делать, чтобы двигаться вперед без задержек и тупиков. Присоединяйтесь, чтобы: ✅ избежать ошибок, мешающих карьерному росту; ✅ избавиться от основных сложностей развития в профессии; ✅ увидеть, как эффективно развиваться в IT-индустрии; ✅ отрефлексировать свою карьеру. Когда: 26 сентября в 16:00 Формат: Онлайн Регистрируйся здесь: https://kas.pr/r9nw?erid=LjN8K36or На митапе вы получите практические советы и конкретные шаги для успешного роста в IT.

iOS Dev
8 003
Создание секундомера и таймера на базе SystemFormatStyles в Xcode 16 Вкратце, стили форматирования (format styles) — это заме
Создание секундомера и таймера на базе SystemFormatStyles в Xcode 16 Вкратце, стили форматирования (format styles) — это замена на Swift старых классов Objective-C Formatter от Apple. Они позволяют быстро и легко создавать локализованные отображения различных типов данных. Они безопасны, производительны и очень просты в использовании в коде для преобразования одного типа в другой. Но документация Apple не всегда описывает все нововведения сразу же (или вообще никогда). 📖 В этом примере уже сейчас можно познакомиться с двумя новыми стилями SystemFormatStyle.Stopwatch и SystemFormatStyle.Timer. 😃 iOS Dev

iOS Dev
8 003
🚀 Swift 6 официально анонсирован! И хотя мы с вами используем язык для разработки приложений, он подходит и для много другого: написания библиотек, интернет-сервисов и критичного к производительности и безопасности кода. Swift 6 расширился ещё и за счёт новых функций низкоуровневого программирования, расширенной поддержки Linux и Windows, новых кроссплатформенным API, включая новую библиотеку тестирования Swift. 📖 На макро-уровне изменения разобраны в этой статье. А в канале уже сейчас можно прочитать про: 🔗 Новый метод count(where:) в Swift 6 🔗 DebugDescription в Xcode 16: новый макрос для упрощения отладки 🔗 Обновлённый Foundation 🔗 Swift Testing: Разбор API и макроса #expect 🔗 Миграция на Swift 6. И ещё: Swift 6: подготовка ваших проектов Xcode к будущему 😃 iOS Dev

iOS Dev
8 003
Кастомизация тем в SwiftUI с использованием ShapeStyle В SwiftUI настройка внешнего вида приложения на базе кастомной темы бе
Кастомизация тем в SwiftUI с использованием ShapeStyle В SwiftUI настройка внешнего вида приложения на базе кастомной темы безусловно улучшит пользовательский опыт. Первоначальный подход к управлению этими настройками предполагает монотонное повторение одних и тех же действий для разных экранов. 📖 В этой статье рассмотрен способ с использованием кастомного ShapeStyle для создания собственных тем во всем приложении. 😃 iOS Dev

iOS Dev
8 003
Подборка вопросов по Swift и iOS с технических собеседований 2024 Я продолжаю обновлять базу знаний, а также собирать материалы (и новые темы) для будущего обновления приложения iOS IQ. Сегодня готов поделиться здесь огромным материалом (а в ноушене комментариями, дополнениями и примерами). 1. В чем разница между статической переменной и переменной класса? Почему их природа схожа, и при чём здесь наследование? 2. Вычисляются ли ленивые переменные более одного раза? И почему потокобезопасность важна. 3. В чём разница между self и Self? Разница же в Swift заключается в их использовании и контексте. Если вы писали на других языках, то наверняка знаете для чего там использовался this или typeof (в ноушне много примеров). 4. Как сделать методы опциональными в протоколе? Есть два подхода - optional и extension (а вот как их использовать - в разборе вот здесь). 5. Как происходит оптимизация использования памяти в UITableView? В канале я регулярно делюсь проблемами и решениями для оптимизации. Например, как быть, если у нас очень много ячеек. В Notion есть пример разбора и таких ситуаций. 6. Что такое Dependency Injection и каковы его преимущества? Здесь, как вы уже догадались, речь про Constructor injection/Property injection/Method injection. Ну и про описание преимуществ, конечно. 7. Объясните разницу между throws и rethrows в Swift Как правильно использовать do-catch и многое другое. 8. Объясните типы сессий и задач, поддерживаемые классом URLSession. Default Session/Ephemeral Session/Background Session. В этой теме рассмотрено, есть ли у нас способ повторить неудавшиеся запросы. 9. Сравните статические и динамические библиотеки Про то, что может включать каждый тип либ, что происходит при компиляции, как быть с обновлениями. 10. Как бы вы реализовали список с бесконечной прокруткой? Большой разбор на примерах. 11. Что такое copy-on-write в Swift? Объясните, как настроить его реализацию. Конечно, эта техника позволяет значительно сократить использование памяти и повысить производительность. Но вот что внутри? 12. Объясните, как используется паттерн Factory и какую проблему решает этот паттерн. Тут можно не забыть об использовании этой подборки 13. Что такое APNS и как он работает? 14. Объясните назначение ключевого слова «mutating» в Swift. 15. В чем разница между @StateObject и @ObservedObject в SwiftUI? 16. Что такое Mocks и Stubs и в чем разница между ними? Назначение/Поведение/Использование. 17. Объясните протоколы Equatable, Hashable и Comparable в Swift. 18. Что означает UIApplicationMain? 19. Объясните, почему Swift является типобезопасным языком? Все о Strong Type, Type Inference, Type Casting, optional, дженериках. 20. Зачем вам нужны escaping closures и когда их следует использовать? ✅Напомню, что в бусти продолжает действовать выгодное предложение (а если вам нравится канал — то ещё и здесь, в телеграм), и вы уже сейчас можете получить доступ не только к этому материалу, но и к большому количеству тем для собеседований и разбору практических задач. 😃 iOS Dev

iOS Dev
8 003
Оптимизация использования памяти для SwiftUI+CoreData Несмотря на наличие lazy containers в SwiftUI, и в целом механизмов для
Оптимизация использования памяти для SwiftUI+CoreData Несмотря на наличие lazy containers в SwiftUI, и в целом механизмов для оптимизации CoreData, по мере увеличения сложности приложений могут возникнуть ситуации, когда можно поймать краши из-за слишком большого использования памяти. Важно понимать не только особенности работы с вьюхами, но и свойства самой CoreData. 📖 В этом проекте рассмотрен пошаговый процесс оптимизации работы с памятью для демонстрационного приложения (изначально использующего 1,6 ГБ памяти для отображения всего лишь 100 элементов данных), которое в итоге сможет работать с сотнями объектов и юзать всего 200 МБ. 🛠 Код приложения доступен на GitHub. ✅Кстати, если вы хотите почитать в целом про память: ARC, side table, флаги, утечки и многое другое (и поотвечать на вопросы) — доступ можно получить здесь. 😃 iOS Dev

iOS Dev
8 003
Обновление App Store Connect C сегодняшнего дня обязателен только один набор скриншотов для приложений (и для iPhone, и для i
Обновление App Store Connect C сегодняшнего дня обязателен только один набор скриншотов для приложений (и для iPhone, и для iPad). 🤩 Теперь выкладывать приложения будет проще (и быстрее). 😃 iOS Dev

iOS Dev
8 003
Swift Testing: Разбор API и макроса #expect Новый понятный и выразительный API делает написание тестов более простым, а в сам
Swift Testing: Разбор API и макроса #expect Новый понятный и выразительный API делает написание тестов более простым, а в самом интерфейсе Xcode сделали большой шаг вперёд для оповещений при ошибках (или же корректном выполнении). 📖 В этой статье уделено внимание написанию тестов с использованием новых возможностей, а также разобрана миграция с XCTests. 🔗 А вот тут можно детальнее познакомиться с улучшениями и преимуществами по сравнению с XCTests. 😃 iOS Dev