iOS Dev
Kanalga Telegram’da o‘tish
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
Ko'proq ko'rsatish8 000
Obunachilar
-124 soatlar
+467 kunlar
+7930 kunlar
Postlar arxiv
8 001
Параллельное выполнение задач в Swift: подход старой школы vs структурированный параллелизм
Возможность запускать задачи параллельно — это хорошо, ведь это ускорит работу, если вы можете использовать несколько ядер процессора, но как мы можем реализовать такие операции в Swift? 🤔
Представьте, что у вас есть изображение шириной 50 000 пикселей и длиной 20 000 пикселей, то есть ровно один миллиард пикселей.
Как бы вы изменили цвет каждого пикселя? Какой способ вы бы использовали?
📖 Tibor Bödecs на примерах объясняет, как управлять параллельными операциями, используя несколько подходов, в том числе и с использованием Task Group.
@iOS Dev
8 001
Detached tasks в Swift: определение и примеры коды
Detached tasks (отсоединенные задачи) позволяют создать новую задачу верхнего уровня и отключиться от текущего структурированного контекста параллелизма.
Хотя отключение от структурированного параллелизма звучит ужасно, все же есть примеры использования, в которых вы можете извлечь выгоду.
Тем не менее, важно знать о последствиях, чтобы убедиться, что вы знаете, что делаете.
📖 В этом материале вы узнаете:
1️⃣ Что представляет из себя detached task?
2️⃣ Какие риски существуют при использовании таких задач.
3️⃣ Когда использовать detached tasks?
@iOS Dev
8 001
Weekend offer от VK для мобильных разработчиков и ML-специалистов
Команды Дзена, Почты Mail.ru, Антиспама и Маруси приглашают разработчиков пообщаться с командами и получить шанс попасть в одну из них за пару дней: достаточно оставить отклик, и с вами свяжутся.
Уже 18 и 19 февраля состоятся встречи с тимлидами, которые расскажут про процессы и задачи, которые предстоит решать, и ответят на все вопросы. Также состоятся интервью и финальные собеседования с кандидатами. Уже вечером 19 февраля определят лучших и отправят им оффер.
Успевайте оставить отклик до 16 февраля!
@iOS Dev
8 001
Эволюция архитектуры приложения *Facebook для iOS
*Facebook для iOS (FBiOS) — старейшая мобильная кодовая база в *Meta.
С тех пор как приложение было переписано в 2012 году, над ним работали тысячи инженеров, оно было отправлено миллиардам пользователей и оно может поддерживать работу сотен инженеров одновременно.
После многих лет итерации кодовая база не похожа на типичную кодовую базу iOS:
🔘 Там полно C++, Objective-C(++) и Swift.
🔘 Она имеет десятки динамически загружаемых библиотек (dylib) и так много классов, что их невозможно загрузить в Xcode сразу.
🔘 Apple SDK практически не используется в чистом виде — все было обернуто или заменено собственной абстракцией.
🔘 В приложении активно используется генерация кода с помощью Buck (кастомной системы сборки).
🔘 Без интенсивного кэширования нашей системы сборки инженерам пришлось бы провести целый рабочий день в ожидании сборки приложения.
📖 Чтобы отпраздновать 10-летний юбилей кодовой базы, разработчики рассказали о технических решениях, лежащих в основе этой эволюции, а также об их историческом контексте.
*Facebook и Instagram продукты компании Meta, которая признана в России экстремистской организацией, деятельность ее сервисов Facebook и Instagram в стране запрещена.
@iOS Dev
8 001
Создание iOS-приложения в стиле Trello с помощью Drag & Drop API
Drag & Drop — это взаимодействие с пользователем, с помощью которого можно перемещать данные по экрану.
Эта фича активно используется такими приложениями, как Trello, Jira и многими другими для перемещения элементов между досками.
📖 В этом примере используется API перетаскивания для создания приложения, похожего на Trello, с несколькими основными функциями:
1️⃣ Создание доски.
2️⃣ Добавление элементов на доску.
3️⃣ Перемещение элементов между досками с помощью перетаскивания.
🛠 Пример итогового приложения доступен на Github.
@iOS Dev
8 001
JUG Ru Group приглашает мобильных разработчиков выступить на конференции Mobius 2023 Spring!
Конференция будет идти четыре дня: 12–13 мая в онлайне и 19–20 мая в офлайне в Москве. Приглашаем вас выступить на ней.
Стать спикером Mobius — это возможность:
👉 Развить личный бренд и улучшить навык публичных выступлений.
👉 Обсудить рабочие задачи в неформальной обстановке.
👉 Попасть на все конференции весны от JUG Ru Group бесплатно.
👉 Пообщаться с комьюнити и Программным комитетом.
Выбирайте любой формат — доклад, воркшоп, дискуссию или что-то свое. Вам помогут подготовиться, проведут репетиции, а после конференции вы получите запись в 4K на YouTube, чтобы поделиться ей с друзьями и коллегами.
Выбирайте тему на сайте или предлагайте свои идеи и подавайте заявку до 20 февраля.
Билеты на Mobius 2023 Spring уже в продаже.
8 001
Как отменить фоновую задачу в Swift при использовании async/await
Синтаксис
async/await, представленный в Swift 5.5, позволяет писать асинхронный код в удобочитаемом виде.
Асинхронное программирование может повысить производительность приложения, но важно иметь возможность отменять неиспользуемые таски, чтобы они не вмешивались в работу приложения.
📖 В этой статье показано, как явно отменить задачу, и показано, как при этом автоматически отменяются дочерние задачи.
Кроме этого, будет полезно перед этим прочесть и этот материал:
🌐 Пример работы с async let для параллельного выполнения фоновых задач в Swift
@iOS Dev8 001
Даже в сложных системах, и даже у Apple встречаются проблемы
Например, приложение часов macOS обновляет свой пользовательский интерфейс с помощью таймеров, и эти таймеры добавляются только в
defaultRunLoopMode, в результате чего пользовательский интерфейс перестает обновляться (попросту фризятся часы) при открытии и отслеживании меню.
А вот если бы они прочитали этот пост в нашем канале, то такой проблемы бы не было:
Полное руководство по использованию таймеров в Swift ⏳
@iOS Dev — на самом деле работа со временем может быть куда труднее8 001
Поиск эффективного алгоритма для определения среднего цвета изображения
Поиск среднего цвета изображения — хороший трюк, который можно иметь в своем наборе инструментов для оживления ваших экранов.
Например, в iOS он используется Apple для создания своих красивых виджетов на хоумскрине.
Существует множество статей о том, как это сделать на iOS, но весь код, например, используя Core Image.
📖 Но, как рассказывает автор в этом материале, здесь могут быть свои подводные камни, и описывает ещё два подхода, которые можно использовать.
@iOS Dev
8 001
Пример создания нативного приложения с использованием реализации Core ML Stable Diffusion от Apple
В декабре в Apple представили оптимизацию Core ML для Stable Diffusion в macOS 13.1 и iOS 16.2, а также код для начала развертывания на устройствах Apple Silicon.
Существует ряд причин, по которым развертывание Stable Diffusion на устройстве в приложении предпочтительнее серверного подхода.
1️⃣ Во-первых, конфиденциальность конечного пользователя защищена, поскольку любые данные, предоставленные пользователем в качестве входных данных для модели, остаются на устройстве пользователя.
2️⃣ Во-вторых, после первоначальной загрузки пользователям не требуется подключение к Интернету для использования модели.
3️⃣ Наконец, локальное развертывание этой модели позволяет разработчикам сократить или полностью исключить свои расходы, связанные с сервером.
🔗 В этом репозитории содержатся подробные инструкции по тестированию и развертыванию.
🔗 Пример реализации в нативном приложении на Swift.
Внимание, по очевидным причинам требования к совместимости довольно существенные:
🔘 macOS Ventura 13.1, iOS/iPadOS 16.2, Xcode 14.2.
🔘 Время работы:
~8s in macOS on MacBook Pro M1 Max (64 GB). Model: Stable Diffusion v2-base, ORIGINAL attention implementation, CPU + GPU.
23 ~ 30s on iPhone 13 Pro. Model: Stable Diffusion v2-base, SPLIT_EINSUM attention, CPU + Neural Engine, memory reduction enabled.
@iOS Dev
8 001
Передача данных в iOS: delegates, notifications, closures
Несомненно, это обязательные знания для каждого разработчика, независимо от того, является ли он новичком.
Знание доступных инструментов и методов, того, что работает лучше всего, где и когда, имеет решающее значение для правильного процесса разработки.
В конце концов, возможность отправлять сообщения и данные туда и обратно между классами — это одна из первых вещей, о которых должен узнать разработчик.
В этой статье рассматриваются следующие способы для обмена данными внутри приложения:
1️⃣ Паттерн delegate (о нём можно прочитать ещё и здесь).
2️⃣ Notifications (они же уведомления).
3️⃣ Closures & action handlers.
🛠 Код доступен по ссылке на Github.
Кстати, если вы хотите узнать о способах обмен данными между приложениями, то рекомендую посмотреть вот тут.
@iOS Dev
8 001
Хотите попробовать себя в iOS-разработке, но сложно оставаться с учёбой один на один? На курсе в Яндекс Практикуме вас поддержит целая команда сопровождения.
1. Наставники — действующие мобильные разработчики — проведут Q&A-сессии по сложным темам, сеансы кодинга в прямом эфире и расскажут реальные истории из жизни разработчиков..
2. Ревьюеры — опытные iOS-разработчики — проверят проекты и подскажут, как сделать их лучше.
3. Кураторы и команда поддержки помогут учиться регулярно и не сбиться с пути.
Если вы никогда не пробовали писать код, освоить базовые принципы программирования поможет двухнедельный курс «Бассейн». А в сообществе студентов Практикума можно будет поделиться трудностями и получить совет.
Познакомьтесь с языком Swift и напишите своё первое приложение бесплатно →
8 001
Итерация сообщений веб-сокетов с помощью async / await в Swift
В iOS 13 мы получили возможность легко отправлять и получать данные с помощью веб-сокетов через URLSession.
С помощью
async/await появилась возможность получать данные с серверов, используя ключевое слово await.
📖 В этом материале объясняется, как создать собственный механизм для удобного асинхронного перебора сообщений при использовании веб-сокетов, особое внимание уделяется URLSessionWebSocketTask и AsyncThrowingStream.
@iOS Dev8 001
Repost from Код Воробья для iOS разработчиков
Топ-5 репозиториев, которые набрали больше всего звёзд ⭐️ на GitHub за 2022 год:
- Алгоритмы на Swift от Apple.
- Приложение на SwiftUI с общим кодом для Mac, iPad и iPhone. Тоже от Apple.
- DivKit рисует интерфейс с сервера. Проект Яндекса.
- Настраиваемые spring-анимации.
- Графики на Swift Charts.
В нашем чате ежедневно приходит топ-репозиториев за день.
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
