ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку

iOS Dev

iOS Dev

Открыть в Telegram

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

Больше
7 966
Подписчики
+1524 часа
+187 дней
+5230 дней
Архив постов
iOS Dev
7 968
Полезная информация по добавлению Privacy Manifests 👨‍💻 Май уже начался, и это означает, что теперь все билды приложений, которые мы отправляем на проверку, должны содержать новые манифесты (при условии использования соответствующих API). В этом посте постарался объединить доступную инфу, которая минимизирует траты времени на внедрение новых требований Apple: 1️⃣ Официальная документация по использованию манифестов. 2️⃣ Скрипты для поиска возможного использования такого API на github. 3️⃣ Онлайн-помощник для создания манифестов. 4️⃣ Две больших русскоязычных статьи с разбором (на хабре и на sparrowcode). 😃 iOS Dev

iOS Dev
7 968
Dispatch Barrier, потокобезопасность и почему слишком много очередей это плохо Параллельные и последовательные очереди помога
Dispatch Barrier, потокобезопасность и почему слишком много очередей это плохо Параллельные и последовательные очереди помогают нам управлять выполнением задач, а вместе с этим позволяют нашим приложениям работать быстрее, эффективнее и с улучшенной отзывчивостью. Мы можем легко создавать очереди, используя класс DispatchQueue, который построен на основе GCD. 🔒 Dispatch Barrier представляет собой механизм синхронизации задач в очереди. Если по дефолту очередь работает параллельно, то после добавления флага .barrier такая задача будет отложена, пока не выполнятся все остальные. Уже после этого очередь выполнит нашу задачу, помеченную барьером, самостоятельно, и вернётся к обычному режиму работы. 🍏 В iOS IQ я добавил мощный материал, который поможет разобраться с барьерами на примерах. Постарался вынести не только плюсы, но и возможные минусы чрезмерного использования, и почему оптимизация может оказаться обманчивой. А ещё там есть несколько десятков вопросов, доступных уже сейчас. ➡️ Подписаться можно здесь. 😃 iOS Dev

iOS Dev
7 968
Создание приложения-чата, используя StreamChat SDK и SwiftUI 🛠 SDK на Github включает в себя приличный набор высокопроизводи
Создание приложения-чата, используя StreamChat SDK и SwiftUI 🛠 SDK на Github включает в себя приличный набор высокопроизводительных и настраиваемых компонентов интерфейса. 📖 А в этой статье приводится пример настройки (около 100 строк кода на полностью рабочее приложение). Добавлю, что SDK и пример приложения позволят познакомиться с чатом, но при собственной реализации будут ожидать совсем другие сложности. Например, как приложение будет справляться с сотнями сообщений в секунду (поверьте, бывает и такое), и как при этом будет себя вести интерфейс. Впрочем, это совсем другая история😎 😃 iOS Dev

iOS Dev
7 968
Эффективный способ загрузки больших изображений в основном потоке В подавляющем большинстве случаев нам подойдёт вариант: let
Эффективный способ загрузки больших изображений в основном потоке В подавляющем большинстве случаев нам подойдёт вариант: let image = UIImage(named: "big-image") imageView.image = image Но вот если картинка действительно крупная, то это может визуально подвесить приложуху на какое-то время. Особеннно это проявится, например, при работе с коллекциями. В таком случае можно справедливо обратиться к документации (и к совету Винсента), в которых говорится о том, что всё-таки есть ещё один способ. 🐱 prepareForDisplay декодирует нашу картинку в фоновом потоке, и уже после этого можно использовать результат из completionHandler. Важно не забыть вернуться в основной поток, конечно же. Или использовать Task, если вы уже перевели (или переводите проект для Swift Concurrency). 🍏 Кстати, большое количество материалов в базе знаний поможет быстрее разобраться со Swift Concurrency. 😃 iOS Dev

iOS Dev
7 968
Подробный разбор модификаторов Overlay и Background в SwiftUI В инструментарии SwiftUI overlay и background играют незамениму
Подробный разбор модификаторов Overlay и Background в SwiftUI В инструментарии SwiftUI overlay и background играют незаменимую роль в различных сценариях разработки. 📖 В этой статье рассмотрены не только их уникальные атрибуты, но и разбираются фундаментальные отличия от ZStack, а также показаны примеры сценариев, для которых они предназначены. 🤩 А вот тут есть интерактивный помощник, в котором можно посмотреть отличия прямо в браузере. 😃 iOS Dev

iOS Dev
7 968
Погружение в макросы Swift Макросы Swift впервые были представлены на WWDC 23, и хотя это не новая концепция в программирован
Погружение в макросы Swift Макросы Swift впервые были представлены на WWDC 23, и хотя это не новая концепция в программировании в целом, она привнесла полезные опции для Swift-разработчиков. Они позволяют настраивать язык Swift в соответствии с нашими потребностями и распространять их среди других разработчиков без изменения кода компилятора. 📖 В этом разборе показаны принципы работы макросов, а также настройка и использование на простом примере. 🔗 Кстати, в канале есть и ещё несколько примеров создания. 😃 iOS Dev

iOS Dev
7 968
Так ли нужен MVVM для разработки SwiftUI-приложений? Автор следующей статьи показывает свою точку зрения, отличную от общепри
Так ли нужен MVVM для разработки SwiftUI-приложений? Автор следующей статьи показывает свою точку зрения, отличную от общепринятой. Но, конечно, на самом деле ни один паттерн или архитектура не может покрыть все потребности — всегда есть компромиссы. Именно поэтому важно знать и об альтернативных вариантах, чтобы принять правильное решение при разработке. 📖 В частности, в своем рассуждении он отвечает на следующие вопросы: 1️⃣ Что делать с тем, что логика будет во Views, ведь это плохая практика? 2️⃣ Как быть с тестированием без View Model? 3️⃣ Если это сработает с маленькими приложениями, то как быть с более крупными проектами? 🛠 Кстати, вот тут есть коллекция самых разных архитектур на Github. 🍏 А вот здесь есть множество примеров и разборов реализаций, их преимуществ и недостатков. 😃 iOS Dev

iOS Dev
7 968
Полезные материалы для подготовки к секции System Design В отличие от частей, затрагивающих алгоритмы и лайвкодинг, на секции проектирования нет понятия решил/не решил задачу. В канале вы можете найти пост, что именно этот раздел собеседований помогает определить более опытного разработчика. В iOS IQ я не только структурирую источники знаний, но и получаю ценнейшие комментарии от коллег, в том числе помогающие углубить некоторые направления. Сегодня я хотел бы поделиться частью источников для подготовки к System Design: 🔗 Пять видео по системному дизайну от разработчика, проходившего собесы в MANGA. 🔗 Собеседование на Senior-разработчика с Александром Зиминым, основной упор на System Design (открытое видео с канала Podlodka). 🔗 Разбор архитектурной секции с Mobius (в тегах не iOS, но это не главное). 🔗 Разбор собеседований по System Design от человека с опытом 300+ интервью с кандидатами на хабре. 🔗 Разбор проблем проектирования iOS-приложения на реальных примерах. ✅ Подписывайтесь на iOS IQ, чтобы посмотреть на сложности проектирования с разных точек зрения и узнать больше (а ещё там есть разбор других важных секций). 😃 iOS IQ

iOS Dev
7 968
Как использовать экспериментальные версии (и функции) Swift в Xcode? Если вы любите читать о том, что нового появилось в Swif
Как использовать экспериментальные версии (и функции) Swift в Xcode? Если вы любите читать о том, что нового появилось в Swift, или узнавать обо всех грядущих крутых новинках, часто хочется попробовать эти фичи самостоятельно. Иногда действительно придётся подождать, но часто в пропозалах можно встретить следующее: -enable-experimental-feature Это говорит нам о том, что если зайти в Swift непосредственно из main-ветки, можно протестить эту фичу, установив нужный флаг компилятора. Например, release/5.10 or release/6.0 показывает, что функция будет доступна только при использовании Swift из этой ветки. 📖 В этом материале можно почитать не только об установке альтернативного тулчейна для Xcode, но и об использовании экспериментальных фич. 😃 iOS Dev

iOS Dev
7 968
Поведенческие паттерны в Swift: определение, использование, недостатки В них включают паттерны проектирования, определяющие а
Поведенческие паттерны в Swift: определение, использование, недостатки В них включают паттерны проектирования, определяющие алгоритмы и способы реализации взаимодействия различных объектов и классов. Например, с помощью паттерна Chain of Responsibility можно передавать запросы последовательно по цепочке (отсюда и название). А вот дальше каждый последующий обработчик решит, может ли он обработать запрос (или его нужно передать дальше). Паттерн Command превращает запросы в объекты, позволяя передавать их как аргументы при вызове методов, ставить запросы в очередь, логировать их, а также поддерживать отмену операций (так что популярные действий Undo во многих приложениях использует именно этот паттерн). Вообще, согласно банде четырёх к таким паттернам относятся: - Цепочка обязанностей. - Команда. - Интерпретатор. - Итератор. - Посредник. - Хранитель (он же memento). - Наблюдатель. - Состояние. - Стратегия. - Шаблонный метод. - Посетитель. Каждый их них представляет собой решение общей проблемы проектирования и может быть использован для создания более эффективных, удобные в обслуживании и масштабируемых приложений. 🍏 В iOS IQ уже разобраны некоторые из паттернов (с кодом, примерами использования, и полезными репозиториями, и пока что действует промо). ⬆️О структурных паттернах проектирования можно почитать тут. 😃 iOS IQ

iOS Dev
7 968
Четыре полезных сервиса для работы с JSON в Swift 1️⃣ quicktype.io — удобный сервис для создания моделей и сериализации JSON
Четыре полезных сервиса для работы с JSON в Swift 1️⃣ quicktype.io — удобный сервис для создания моделей и сериализации JSON (не только на Swift) с кучей опций и параметров. 2️⃣ SwiftyJSON — популярнейший репозиторий на GitHub для упрощения работы с JSON (22 000 звёзд). 3️⃣ jsonformatter.org — валидатор и конвертер для JSON. 4️⃣ jsoncrack.com — наглядная визуализация структуры json (есть ещё вот сервис, но он временно недоступен). 😃 iOS Dev

iOS Dev
7 968
Использование собственного голоса в приложении iOS Функция преобразования текста в речь существует на iOS уже более десяти ле
Использование собственного голоса в приложении iOS Функция преобразования текста в речь существует на iOS уже более десяти лет, но в iOS 17 Apple добавила несколько новых функций, которые могут стать интересным дополнением к вашему приложению. Конечно, для этого понадобится AVSpeechSynthesizer. Кстати, список novelty-голосов можно посмотреть вот тут (Accessibility > Live Speech > Voices, посмотрите как-нибудь, если не видели ранее). 📖 В этой статье рассказано, как использовать AVSpeechSynthesizer, чтобы подключить системные, новые, и даже «персональный голос», созданный с помощью ИИ! 😃 iOS Dev

iOS Dev
7 968
🎉 Веб-распространение приложений для iOS в ЕС уже доступно Ранее Apple анонсировали эту возможность для Европы при выполнении определённых требований (ждём и для стран СНГ?) . 🎆 А с сегодняшнего дня фича уже доступна в iOS 17.5 (beta 2) и в App Store Connect для разработчиков, про требования можно почитать здесь. 😃 iOS Dev

iOS Dev
7 968
Блок вопросов: многопоточность (и бонус) В iOS IQ на сегодня больше 10 крупных разделов (от алгоритмов до архитектур), каждый
Блок вопросов: многопоточность (и бонус) В iOS IQ на сегодня больше 10 крупных разделов (от алгоритмов до архитектур), каждый из которых постоянно обновляется, несколько сотен статей и множество реальных примеров кода. На выходных я провёл редизайн некоторых секций, и теперь вопросы будут вынесены более явно. Цель — собрать не только теорию, не только код, но и вопросы, которые требуют размышлений. Ведь все мы знаем, что правильно заданное направление (или вопрос) позволяет решить задачу уже на автоматизме. Сейчас в этом разделе уже 20 вопросов, начиная от GCD и заканчивая async/await. А в разделе с вопросами на чтение кода ещё больше. Каждая тема подкреплена материалами для изучения, с которых следует начать подготовку. 🍏➡️Секретная ссылка со скидкой здесь (количество активаций ограничено). Скоро будет дополнительный анонс по развитию контента, рекомендую подписаться заранее, чтобы не пропустить. 😃 iOS IQ

iOS Dev
7 968
Как быстро создать privacy manifest для приложения Уже сейчас при заливке билдов в аппсторе есть соответствующее уведомление,
Как быстро создать privacy manifest для приложения Уже сейчас при заливке билдов в аппсторе есть соответствующее уведомление, а начиная с мая можно получить реджект, если не будет соответствующего манифеста. Мик Бирн посчитал не слишком удобным, как это сделано сейчас в Xcode (поиск причин вручную) и реализовал собственную тулзу для генерации таких файлов (бесплатно и в открытом доступе). 🔗 Создать собственный манифест можно с помощью этого ресурса. 😃 iOS Dev

iOS Dev
7 968
🍏 Структурные паттерны проектирования в Swift Cтруктурные шаблоны (structural patterns) — шаблоны проектирования, в которых
🍏 Структурные паттерны проектирования в Swift Cтруктурные шаблоны (structural patterns) — шаблоны проектирования, в которых рассматривается вопрос о том, как из классов и объектов образуются более крупные структуры. Проще говоря, этот вид паттернов связан с композицией объектов или тем, как сущности могут использовать друг друга. Что к ним можно отнести? - Адаптер. - Мост. - Компоновщик. - Декоратор. - Фасад. - Flyweight (приспособленец/легковес). - Прокси. В iOS IQ я уже писал о том, почему удобная архитектура == более гибкий и лёгкий в поддержке код. ➡️Сегодня вышло большое обновление, в котором я добавил примеры по каждому виду таких паттернов (с кодом, разбором и реальными кейсами, а также видео). ✅Присоединяйтесь, здесь вся база, алгоритмы и архитектура без лишнего флуда. 😃 iOS IQ

iOS Dev
7 968
Создание серчбара в стиле Apple ⭐️Каждый, кто работал с эпловским серчбаром, знает, как сложно было хэндлить разные кейсы до
Создание серчбара в стиле Apple ⭐️Каждый, кто работал с эпловским серчбаром, знает, как сложно было хэндлить разные кейсы до выхода последних версий iOS, особенно если используется непростая кастомизация. Во многих приложениях Apple для visionOS, таких как Music, Safari и Apple TV, также есть удобное поле поиска. Но начиная с версии visionOS 1.1, повторить его визуальное исполнение непросто из-за отсутствия нужного API, хотя и все равно возможно! 📖 В этом материале разработчик объясняет, как можно для этих целей использовать UISearchBar из UIKit (и делится неочевидными сложностями). 😃 iOS Dev

iOS Dev
7 968
Benchmark - инструмент для измерения производительности Swift Производительность, безусловно, ключевая характеристика и для п
Benchmark - инструмент для измерения производительности Swift Производительность, безусловно, ключевая характеристика и для приложений, и для фреймворков. Benchmark позволяет легко чекать множество показателей: загрузку процессора, ARC-трафика, использование памяти, ресурсов оси, таких как потоки и системные вызовы, а также полностью кастомные счетчики метрик. Его основная функция - именно замер производительности, а другие средства (Instruments, DTrace, Heaptrack, Leaks, Sample) могут быть использованы для поиска причин. 🛠 Вот тут есть сылка на репозиторий и статья с примерами на сайте swift.org. 📖 А вот здесь в канале разбор инструмента от ETTrace от Emerge. ✅А в iOS IQ есть огромный раздел c советами по повышению производительности приложений (как бороться с лагами, шаги по поиску утечек и многое другое). 😃 iOS Dev

iOS Dev
7 968
Apple показал Ferret-UI для распознавания мобильных интерфейсов После обучения на собранных массивах данных Ferret-UI демонст
Apple показал Ferret-UI для распознавания мобильных интерфейсов После обучения на собранных массивах данных Ferret-UI демонстрирует отличное понимание интерфейса и способность выполнять открытые инструкции. Ferret-UI не только превосходит большинство опенсорсных MLLM, но и превосходит GPT-4V по всем элементарным UI-задачам. 🔗 Целиком исследование доступно здесь. Вероятно, как минимум, это расширит области по работе с доступностью для определённых групп пользователей, а как максимум, может приведёт нас к этому. К слову, у гугла есть также есть объёмное исследование для работы с интерфейсом. 😃 iOS Dev