iOS Dev
رفتن به کانال در Telegram
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
نمایش بیشتر8 000
مشترکین
-124 ساعت
+467 روز
+7930 روز
آرشیو پست ها
8 001
Реализация видеоплеера на Swift с помощью RealityKit
Apple продолжает исследование и изредка появляются анонсы об очках за $ 3 000. На мой взгляд, не стоит недооценивать потенциальный пул аудитории, которая захочет (и сможет) их себе позволить, и поэтому для прокачивания этой области изредка можно изучать и обращать внимание на связанные с технологией вещи.
Например, зачем необходим огромный физический телевизор, если вы можете транслировать свой контент на виртуальный, который вы можете разместить там, где хотите.
К слову, энтузисты продолжают изучать различные возможности RealityKit, и некоторые вещи реализовать намного проще, чем кажется.
📖 Например, David Cordero показывает, что создать плеер, используя этот фреймворк, совсем несложно.
@iOS Dev
8 001
Вычисление математических выражений с помощью Swift
От научного калькулятора до приложения для работы с электронными таблицами
Арифметические выражения могут быть записаны в одной из трех форм нотаций:
infix, prefix, postfix.
Несмотря на то, что инфиксную нотацию труднее всего обрабатывать на компьютерах, она представляет собой то, как выражения пишутся и распознаются людьми.
Однако, поскольку инфиксные выражения не подходят для простого вычисления, их следует преобразовать либо в префиксную, либо в постфиксную нотацию.
В двух больших материалах Elina Semenko рассказывает о каждом типе нотаций, совершает краткий экскурс в историю, и объясняет на примерах необходимые преобразовнаия, используя Swift.
📖 Первая часть. Преобразование инфиксных выражений в постфиксные выражения.
📖 Вторая часть. Улучшение алгоритма и пример использования NSExpression.
Бонусом рассматривается применение фреймворка JavaScriptCore (в чём может быть польза, и почему его стоит использовать в очень редких ситуациях).
@iOS Dev8 001
Пример реализации загрузки файла на сервер без использования сторонних библиотек на 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 Dev8 001
Шпаргалка по Swift DateFormatter с формулами и примерами
⏳Управление и в целом форматирование дат в Swift — частая задача при разработке.
📖 В этом посте представлены примеры работы с
DateFormatter, Date и другими структурами, которые позволяют анализировать, форматировать и извлекать компоненты из дат и строк.
@iOS Dev8 001
Пример работы с async let для параллельного выполнения фоновых задач в Swift
📱Задача для реализации поддержки отзывчивого пользовательского интерфейса — одна из наиболее приоритетных при разработке.
async/await предоставляет чистый механизм для выполнения асинхронных задач.
Но бывают такие случаи, когда вызывается несколько методов в фоновом режиме, и по умолчанию эти вызовы выполняются последовательно.
async let возвращается немедленно, позволяя коду перейти к следующему вызову, и уже затем все возвращенные объекты можно ожидать вместе (используя await).
📖 В этом материале на примере имитации загрузки файлов объясняется, как можно использовать async let.
@iOS Dev8 001
URLSession: распространенные ошибки при выполнении задач фоновой загрузки и скачивания
URLSession позволяет загружать и загружать файлы, когда приложение работает в фоновом режиме.
Все, кто так или иначе работал с URLSession, понимают, что иногда возникают сложности при реализации загрузки нескольких файлов или работе в бэкграунде.
Реализация поддержки передачи данных в фоновом режиме сопряжена со множеством подводных камней.
Например, Xcode debugger может помешать в отладке, а реальное устройство, наоборот, помочь.
📖 В этом посте автор делится своим опытом о столкновении с некоторыми распространенными ловушками.
Кстати, рекомендую прочесть про способ ожидания подключения к интернету.
А ещё есть материал о написании API-клиента с использованием async/await.
@iOS Dev8 001
5 способов передавать данные из UIKit в SwiftUI
Отправка данных из UIKit и SwiftUI может быть довольно непростой, однако существует несколько разных способов сделать это.
🗝 Ключ в том, чтобы найти метод, который лучше всего подходит для вашего проекта и ваших потребностей.
Интеграция SwiftUI и UIKit — это непрерывный процесс, и по мере развития технологий вскоре могут появиться новые методы.
Даже несмотря на то, что многим из нас приходится поддерживать старые версии iOS, будет полезно периодически пополнять базу знаний.
📖 В этом материале автор расскажет о следующих вариантах для передачи данных:
🔘View Initializer.
🔘Observable Objects.
🔘User Defaults.
🔘Environment Object.
🔘Notification Center.
@iOS Dev
8 001
AsyncStream в Swift: определение и примеры использования
Вы можете связать свой существующий асинхронный код с новой системой Concurrency Swift, которая использует
async/await (более подробно можно посмотреть здесь).
Однако в некоторых случаях подход выше не сработает, например, если нужно реализовать: ход загрузки, текущее местоположение пользователя и другие подобные ситуации.
📖 В этом посте объясняется, как можно использовать AsyncStream для создания кастомных асинхронных последовательностей, которые будут выдавать значения по мере необходимости.
@iOS Dev8 001
Кастомные анимации переходов между UIViewController с использованием Metal
Metal — это низкоуровневый API для программирования GPGPU (графического процессора общего назначения).
Довольно часто многие боятся использовать новые API из-за недостатка знаний о том, что может предоставить инструмент, а также из-за отсутствия информации, доступной в Интернете для изучения (иногда это ограничивается скудной документацией Apple).
📖 В этом материале можно узнать, как использовать Metal в приложении, создавая собственные переходы (и анимации).
Ricardo Rachaus рассказывает о своем опыте работы с Metal и приводит пример, как применять Metal API в своих приложениях.
🛠 А вот в этом репозитории можно посмотреть код и попробовать создать собственную анимацию.
@iOS Dev8 001
Почему использование isEmpty быстрее, чем проверка count == 0?
Чтобы понять, почему
isEmpty быстрее, чем count == 0 для строк, нам нужно углубиться в то, как строки работают в Swift на самом деле.
Строки Swift представляют собой сложные наборы символов, в которых несколько символов могут объединяться вместе, образуя одну букву, видимую пользователям.
Например, такой простой смайлик, как британский флаг 🇬🇧, на самом деле состоит из двух разных символов: «G» и «B».
Символы Unicode, если их поставить рядом, автоматически станут британским флагом.
На самом деле в Swift большая часть сложности спрятана внутри, например, один символ, видимый пользователям, может быть дюжиной базовых значений в самой строке.
Таким образом, когда мы читаем размер строки с помощью count, Swift должен пройти через все символы, чтобы выяснить настоящую длину строки.
📖 В этом материале приводится детальное объяснение смелого заявления на примерах.
@iOS Dev8 001
10 различных способов реализации перебора в Swift
Один из самых важных элементов программирования, о котором большинство из нас не задумывается — это циклы.
Без них жизнь в мире программирования была бы почти невозможна.
📖 В этом материале приводится несколько коротких фрагментов кода, которые вы можете использовать для реализации: от простых к более сложным.
@iOS Dev
8 001
Многопоточность в Swift
Подборка материалов для подготовки к собеседованиям
Ключевые темы этого поста: GCD (Grand Central Dispatch), Async/Await, Deadlock, Race Condition, Data race, Thread Explosion, Semaphore
🗒 Для удобства материалы разбиты на два блока, подборка будет дополняться по традиции с прошлым блоком:
🔗 Память, ссылки, side table и многое другое
🇷🇺 Материалы на русском языке
🔗 Многопоточность (concurrency) в Swift: GCD и Dispatch Queues
🔗 Concurrency в Swift, Operation и OperationQueue
🔗 Полное руководство по параллелизму и многопоточности в iOS
🔗 Про многопоточность: Thread и GCD
🔗 Structured concurrency в Swift
🔗 Многопоточность: Примитив синхронизации Semaphore🚦
🔗 Простое определение проблем многопоточки: Race Condition vs Data Race
🏴 Материалы на английском языке
🔗 Grand Central Dispatch: от определения к низкоуровневым примитивам
🔗 Grand Central Dispatch: многопоточность, очереди, параллелизм (две части)
🔗 Объяснение параллелизма: как создать многопоточное приложение для iOS
🔗 Swift Concurrency — вещи, о которых вам не говорят (и почему Actor - тихий убийца вашего кода, а Tasks - бутылочное горлышко)
🔗 Grand Central Dispatch (GCD) Tutorial in Swift 5 за авторством Вадима Булавина
🔗 Несложный блок вопросов в целом по Concurrency
Что почитать ещё?
🔗 Реализация API-клиента для работы с запросами в Swift с использованием Async/Await
🔗 Как приостановить Task в Swift?
🔗 Разбор вариантов рефакторинга в Xcode для async/await
🔗 Создание и планирование локальных уведомлений с помощью async/await
🔗 Async/await в Swift c примером использования на базе существующего проекта
Лучшее спасибо — 👍❤️🔥👏🎉❤️🔥.
@iOS Dev — из этого канала кое-что точно можно сохранить себе😅
8 001
Подробное объяснение Enum с примерами кода в Swift
Конечно,
Enum широко используется в в Swift: If case, guard case, fallthrough и протокол CaseIterable.
Все эти термины могут показаться вам знакомыми, если вы много работали с перечислениями.
Очень важно знать об этих возможностях, чтобы улучшить читабельность вашего кода, и, что более важно, чтобы уменьшить количество потенциальных ошибок.
📖 В этом материале на примерах объясняется, как именно можно использовать перечисление в тех или иных случаях.
ℹ️ Кстати, про 3 способа использования enum, которые должны быть в вашем арсенале, можно прочесть здесь.
@iOS Dev8 001
Пример работы с Apple Health: авторизация и сохранение данных
HealthKit предоставляет центральный репозиторий данных о здоровье и физической форме на iPhone и Apple Watch.
С разрешения пользователя приложения взаимодействуют с HealthKit для доступа к этим данным и обмена ими.
📖 В этом коротком материале объясняется, как сохранить данные и информацию в Apple Health с помощью нескольких строк кода.
🛠 Пример приложения.
@iOS Dev8 001
5 советов по использованию брейкпоинтов, о которых вы могли не знать
Брейкпоинты в Xcode позволяют нам отлаживать и находить решения для неприятных ошибок. Без них это было бы веселым праздником свалкой
print в коде.
📖 В этом материале автор напоминает про следующие возможности:
🔘 Создание брейкпоинтов для всех проектов в Xcode (автоматически).
🔘 Шаринг брейкпоинтов через git.
🔘 Exception breakpoints c заданным действием отладчика.
🔘 Символические брейкпоинты (при вызове определённого метода). А также приводится пример для отладки проблем, связанных с UICollectionView.
🔘 Test failure breakpoint (при сбое тестов).
@iOS Dev
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
