iOS Dev
Ir al canal en Telegram
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
Mostrar más7 878
Suscriptores
-124 horas
Sin datos7 días
-5130 días
Archivo de publicaciones
7 877
JUG Ru Group приглашает мобильных разработчиков выступить на конференции Mobius 2023 Spring!
Конференция будет идти четыре дня: 12–13 мая в онлайне и 19–20 мая в офлайне в Москве. Приглашаем вас выступить на ней.
Стать спикером Mobius — это возможность:
👉 Развить личный бренд и улучшить навык публичных выступлений.
👉 Обсудить рабочие задачи в неформальной обстановке.
👉 Попасть на все конференции весны от JUG Ru Group бесплатно.
👉 Пообщаться с комьюнити и Программным комитетом.
Выбирайте любой формат — доклад, воркшоп, дискуссию или что-то свое. Вам помогут подготовиться, проведут репетиции, а после конференции вы получите запись в 4K на YouTube, чтобы поделиться ей с друзьями и коллегами.
Выбирайте тему на сайте или предлагайте свои идеи и подавайте заявку до 20 февраля.
Билеты на Mobius 2023 Spring уже в продаже.
7 877
Как отменить фоновую задачу в Swift при использовании async/await
Синтаксис
async/await, представленный в Swift 5.5, позволяет писать асинхронный код в удобочитаемом виде.
Асинхронное программирование может повысить производительность приложения, но важно иметь возможность отменять неиспользуемые таски, чтобы они не вмешивались в работу приложения.
📖 В этой статье показано, как явно отменить задачу, и показано, как при этом автоматически отменяются дочерние задачи.
Кроме этого, будет полезно перед этим прочесть и этот материал:
🌐 Пример работы с async let для параллельного выполнения фоновых задач в Swift
@iOS Dev7 877
Даже в сложных системах, и даже у Apple встречаются проблемы
Например, приложение часов macOS обновляет свой пользовательский интерфейс с помощью таймеров, и эти таймеры добавляются только в
defaultRunLoopMode, в результате чего пользовательский интерфейс перестает обновляться (попросту фризятся часы) при открытии и отслеживании меню.
А вот если бы они прочитали этот пост в нашем канале, то такой проблемы бы не было:
Полное руководство по использованию таймеров в Swift ⏳
@iOS Dev — на самом деле работа со временем может быть куда труднее7 877
Поиск эффективного алгоритма для определения среднего цвета изображения
Поиск среднего цвета изображения — хороший трюк, который можно иметь в своем наборе инструментов для оживления ваших экранов.
Например, в iOS он используется Apple для создания своих красивых виджетов на хоумскрине.
Существует множество статей о том, как это сделать на iOS, но весь код, например, используя Core Image.
📖 Но, как рассказывает автор в этом материале, здесь могут быть свои подводные камни, и описывает ещё два подхода, которые можно использовать.
@iOS Dev
7 877
Пример создания нативного приложения с использованием реализации 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
7 877
Передача данных в iOS: delegates, notifications, closures
Несомненно, это обязательные знания для каждого разработчика, независимо от того, является ли он новичком.
Знание доступных инструментов и методов, того, что работает лучше всего, где и когда, имеет решающее значение для правильного процесса разработки.
В конце концов, возможность отправлять сообщения и данные туда и обратно между классами — это одна из первых вещей, о которых должен узнать разработчик.
В этой статье рассматриваются следующие способы для обмена данными внутри приложения:
1️⃣ Паттерн delegate (о нём можно прочитать ещё и здесь).
2️⃣ Notifications (они же уведомления).
3️⃣ Closures & action handlers.
🛠 Код доступен по ссылке на Github.
Кстати, если вы хотите узнать о способах обмен данными между приложениями, то рекомендую посмотреть вот тут.
@iOS Dev
7 877
Хотите попробовать себя в iOS-разработке, но сложно оставаться с учёбой один на один? На курсе в Яндекс Практикуме вас поддержит целая команда сопровождения.
1. Наставники — действующие мобильные разработчики — проведут Q&A-сессии по сложным темам, сеансы кодинга в прямом эфире и расскажут реальные истории из жизни разработчиков..
2. Ревьюеры — опытные iOS-разработчики — проверят проекты и подскажут, как сделать их лучше.
3. Кураторы и команда поддержки помогут учиться регулярно и не сбиться с пути.
Если вы никогда не пробовали писать код, освоить базовые принципы программирования поможет двухнедельный курс «Бассейн». А в сообществе студентов Практикума можно будет поделиться трудностями и получить совет.
Познакомьтесь с языком Swift и напишите своё первое приложение бесплатно →
7 877
Итерация сообщений веб-сокетов с помощью async / await в Swift
В iOS 13 мы получили возможность легко отправлять и получать данные с помощью веб-сокетов через URLSession.
С помощью
async/await появилась возможность получать данные с серверов, используя ключевое слово await.
📖 В этом материале объясняется, как создать собственный механизм для удобного асинхронного перебора сообщений при использовании веб-сокетов, особое внимание уделяется URLSessionWebSocketTask и AsyncThrowingStream.
@iOS Dev7 877
Repost from Код Воробья для iOS разработчиков
Топ-5 репозиториев, которые набрали больше всего звёзд ⭐️ на GitHub за 2022 год:
- Алгоритмы на Swift от Apple.
- Приложение на SwiftUI с общим кодом для Mac, iPad и iPhone. Тоже от Apple.
- DivKit рисует интерфейс с сервера. Проект Яндекса.
- Настраиваемые spring-анимации.
- Графики на Swift Charts.
В нашем чате ежедневно приходит топ-репозиториев за день.
7 877
Реализация видеоплеера на Swift с помощью RealityKit
Apple продолжает исследование и изредка появляются анонсы об очках за $ 3 000. На мой взгляд, не стоит недооценивать потенциальный пул аудитории, которая захочет (и сможет) их себе позволить, и поэтому для прокачивания этой области изредка можно изучать и обращать внимание на связанные с технологией вещи.
Например, зачем необходим огромный физический телевизор, если вы можете транслировать свой контент на виртуальный, который вы можете разместить там, где хотите.
К слову, энтузисты продолжают изучать различные возможности RealityKit, и некоторые вещи реализовать намного проще, чем кажется.
📖 Например, David Cordero показывает, что создать плеер, используя этот фреймворк, совсем несложно.
@iOS Dev
7 877
Вычисление математических выражений с помощью Swift
От научного калькулятора до приложения для работы с электронными таблицами
Арифметические выражения могут быть записаны в одной из трех форм нотаций:
infix, prefix, postfix.
Несмотря на то, что инфиксную нотацию труднее всего обрабатывать на компьютерах, она представляет собой то, как выражения пишутся и распознаются людьми.
Однако, поскольку инфиксные выражения не подходят для простого вычисления, их следует преобразовать либо в префиксную, либо в постфиксную нотацию.
В двух больших материалах Elina Semenko рассказывает о каждом типе нотаций, совершает краткий экскурс в историю, и объясняет на примерах необходимые преобразовнаия, используя Swift.
📖 Первая часть. Преобразование инфиксных выражений в постфиксные выражения.
📖 Вторая часть. Улучшение алгоритма и пример использования NSExpression.
Бонусом рассматривается применение фреймворка JavaScriptCore (в чём может быть польза, и почему его стоит использовать в очень редких ситуациях).
@iOS Dev7 877
Пример реализации загрузки файла на сервер без использования сторонних библиотек на Swift
По этой ссылке немного вводной теории:
🌐 Что такое multipart/form-data?
В двух словах, как работает уровень HTTP: вы отправляете некоторые данные с некоторыми заголовками на заданный URL-адрес, используя метод, и в качестве ответа вы получите код состояния, некоторые заголовки и, возможно, что-то вроде данных ответа.
🔘
HTTP request = Method + URL + Headers + Body (request data)
🔘 HTTP response = Status code + Headers + Body (response data)
📖 В своей статье Tibor Bödecs рассказывает, как реализовать это, используя Swift, и приводит примеры кода.
@iOS Dev7 877
Шпаргалка по Swift DateFormatter с формулами и примерами
⏳Управление и в целом форматирование дат в Swift — частая задача при разработке.
📖 В этом посте представлены примеры работы с
DateFormatter, Date и другими структурами, которые позволяют анализировать, форматировать и извлекать компоненты из дат и строк.
@iOS Dev7 877
Пример работы с async let для параллельного выполнения фоновых задач в Swift
📱Задача для реализации поддержки отзывчивого пользовательского интерфейса — одна из наиболее приоритетных при разработке.
async/await предоставляет чистый механизм для выполнения асинхронных задач.
Но бывают такие случаи, когда вызывается несколько методов в фоновом режиме, и по умолчанию эти вызовы выполняются последовательно.
async let возвращается немедленно, позволяя коду перейти к следующему вызову, и уже затем все возвращенные объекты можно ожидать вместе (используя await).
📖 В этом материале на примере имитации загрузки файлов объясняется, как можно использовать async let.
@iOS Dev