Обложка канала

iOS Dev. Страница 6

iOS разработчик, который делится фишками, своим опытом и опытом других. В этом канале вы сможете найти истории из жизни, подходы к реализации а также новости и тренды из мира iOS-разработки Авторский канал, iOS разработка

  • iOS Dev

    Реализация видеоплеера на Swift с помощью RealityKit Apple продолжает исследование и изредка появляются анонсы об очках за $ 3 000. На мой взгляд, не стоит недооценивать потенциальный пул аудитории, которая захочет (и сможет) их себе позволить, и поэтому для прокачивания этой области изредка можно изучать и обращать внимание на связанные с технологией вещи. Например, зачем необходим огромный физический телевизор, если вы можете транслировать свой контент на виртуальный, который можно разместить где угодно. К слову, энтузисты продолжают изучать различные возможности RealityKit, и некоторые вещи реализовать намного проще, чем кажется. 📖 Например, David Cordero показывает, что создать плеер, используя этот фреймворк, совсем несложно. @iOS Dev
  • iOS Dev

    Вычисление математических выражений с помощью Swift От научного калькулятора до приложения для работы с электронными таблицами Арифметические выражения могут быть записаны в одной из трех форм нотаций: infix, prefix, postfix. Несмотря на то, что инфиксную нотацию труднее всего обрабатывать на компьютерах, она представляет собой то, как выражения пишутся и распознаются людьми. Однако, поскольку инфиксные выражения не подходят для простого вычисления, их следует преобразовать либо в префиксную, либо в постфиксную нотацию. В двух больших материалах Elina Semenko рассказывает о каждом типе нотаций, совершает краткий экскурс в историю, и объясняет на примерах необходимые преобразовнаия, используя Swift. 📖 Первая часть. Преобразование инфиксных выражений в постфиксные выражения. 📖 Вторая часть. Улучшение алгоритма и пример использования NSExpression. Бонусом рассматривается применение фреймворка JavaScriptCore (в чём может быть польза, и почему его стоит использовать в очень редких ситуациях). @iOS Dev
  • iOS Dev

    Пример реализации загрузки файла на сервер без использования сторонних библиотек на 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 Dev
  • Реклама

  • iOS Dev

    Шпаргалка по Swift DateFormatter с формулами и примерами ⏳Управление и в целом форматирование дат в Swift — частая задача при разработке. 📖 В этом посте представлены примеры работы с DateFormatter, Date и другими структурами, которые позволяют анализировать, форматировать и извлекать компоненты из дат и строк. @iOS Dev
  • iOS Dev

    Пример работы с async let для параллельного выполнения фоновых задач в Swift 📱Задача для реализации поддержки отзывчивого пользовательского интерфейса — одна из наиболее приоритетных при разработке. async/await предоставляет чистый механизм для выполнения асинхронных задач. Но бывают такие случаи, когда вызывается несколько методов в фоновом режиме, и по умолчанию эти вызовы выполняются последовательно. async let возвращается немедленно, позволяя коду перейти к следующему вызову, и уже затем все возвращенные объекты можно ожидать вместе (используя await). 📖 В этом материале на примере имитации загрузки файлов объясняется, как можно использовать async let. @iOS Dev
  • iOS Dev

    URLSession: распространенные ошибки при выполнении задач фоновой загрузки и скачивания URLSession позволяет загружать и загружать файлы, когда приложение работает в фоновом режиме. Все, кто так или иначе работал с URLSession, понимают, что иногда возникают сложности при реализации загрузки нескольких файлов или работе в бэкграунде. Реализация поддержки передачи данных в фоновом режиме сопряжена со множеством подводных камней. Например, Xcode debugger может помешать в отладке, а реальное устройство, наоборот, помочь. 📖 В этом посте автор делится своим опытом о столкновении с некоторыми распространенными ловушками. Кстати, рекомендую прочесть про способ ожидания подключения к интернету. А ещё есть материал о написании API-клиента с использованием async/await. @iOS Dev
  • iOS Dev

    5 способов передавать данные из UIKit в SwiftUI Отправка данных из UIKit и SwiftUI может быть довольно непростой, однако существует несколько разных способов сделать это. 🗝 Ключ в том, чтобы найти метод, который лучше всего подходит для вашего проекта и ваших потребностей. Интеграция SwiftUI и UIKit — это непрерывный процесс, и по мере развития технологий вскоре могут появиться новые методы. Даже несмотря на то, что многим из нас приходится поддерживать старые версии iOS, будет полезно периодически пополнять базу знаний. 📖 В этом материале автор расскажет о следующих вариантах для передачи данных: 🔘View Initializer. 🔘Observable Objects. 🔘User Defaults. 🔘Environment Object. 🔘Notification Center. @iOS Dev
  • iOS Dev

    AsyncStream в Swift: определение и примеры использования Вы можете связать свой существующий асинхронный код с новой системой Concurrency Swift, которая использует async/await (более подробно можно посмотреть здесь). Однако в некоторых случаях подход выше не сработает, например, если нужно реализовать: ход загрузки, текущее местоположение пользователя и другие подобные ситуации. 📖 В этом посте объясняется, как можно использовать AsyncStream для создания кастомных асинхронных последовательностей, которые будут выдавать значения по мере необходимости. @iOS Dev
  • iOS Dev

    Кастомные анимации переходов между UIViewController с использованием Metal Metal — это низкоуровневый API для программирования GPGPU (General Purpose Graphics Processing Unit). Довольно часто многие боятся использовать новые API из-за недостатка знаний о том, что может предоставить инструмент, а также из-за отсутствия информации, доступной в Интернете для изучения (иногда это ограничивается скудной документацией Apple). 📖 В этом материале можно узнать, как использовать Metal в приложении, создавая собственные переходы (и анимации). Ricardo Rachaus рассказывает о своем опыте работы с Metal и приводит пример, как применять Metal API в своих приложениях. 🛠 А вот в этом репозитории можно посмотреть код и попробовать создать собственную анимацию. @iOS Dev
  • iOS Dev

    Почему использование isEmpty быстрее, чем проверка count == 0? Чтобы понять, почему isEmpty быстрее, чем count == 0 для строк, нам нужно углубиться в то, как строки работают в Swift на самом деле. Строки Swift представляют собой сложные наборы символов, в которых несколько символов могут объединяться вместе, образуя одну букву, видимую пользователям. Например, такой простой смайлик, как британский флаг 🇬🇧, на самом деле состоит из двух разных символов: «G» и «B». Символы Unicode, если их поставить рядом, автоматически станут британским флагом. На самом деле в Swift большая часть сложности спрятана внутри, например, один символ, видимый пользователям, может быть дюжиной базовых значений в самой строке. Таким образом, когда мы читаем размер строки с помощью count, Swift должен пройти через все символы, чтобы выяснить настоящую длину строки. 📖 В этом материале приводится детальное объяснение смелого заявления на примерах. @iOS Dev
  • iOS Dev

    10 различных способов реализации перебора в Swift Один из самых важных элементов программирования, о котором большинство из нас не задумывается — это циклы. Без них жизнь в мире программирования была бы почти невозможна. 📖 В этом материале приводится несколько коротких фрагментов кода, которые вы можете использовать для реализации: от простых к более сложным. @iOS Dev
  • iOS Dev

    ArraySlice с примерами использования: оператор range и prefix Перед прочтением материала ниже попробуйте ответить: 📊 вот на этот вопрос Стандартная библиотека Swift предоставляет ArraySlice для работы с подмножеством большей коллекции без ненужных расходов на создание копии. Получить первые несколько элементов коллекции можно с помощью использования range, но безопаснее использовать метод prefix, не беспокоясь об исключении out of range. 📖 В этой статье в прямом смысле наглядно объясняется, что на самом деле скрывает ArraySlice и как избежать ошибок. @iOS Dev
  • iOS Dev

    Путь в тысячу ли начинается с первого шага Эту цитату я когда-то уже упоминал, и, безусловно, она не теряет актуальности в преддверии нового года. Нам всегда сложно начать, а ещё сложнее делать что-то регулярно: формировать полезные привычки, решать задачи на литкоде, вести канал или методично углублять свои знания. 👩‍🎓 В качестве примера могу привести одну притчу: Будда хотел передал приглашение коту, но тот в силу своей природной лени решил поспать и пропустил собрание, и поэтому год стал называться в честь другого пушистого — кролика. В моём канале вы не найдете советы про несколько работ одновременно или про то, как быть экспертом во всём сразу. Я не вхожу в топ-5 айосеров по некоторым рейтингам и не стремлюсь заполнить инфополе белым шумом. Но могу сказать следующее: как и прежде, я продолжу делиться своим опытом (ошибками и не только), интересными материалами и разборами необычных вещей вместе с вами. 2023 на пороге. Проведите это время с теми, кто важен для вас. А поскольку пост начался с цитаты, то ею же я и постараюсь закончить: If you haven't found it yet, keep looking. (Если вы еще не нашли того, что искали, продолжайте поиски.) — Стив Джобс @iOS Dev — мира нам всем ❤️‍🔥
  • iOS Dev

    Многопоточность в 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 — из этого канала кое-что точно можно сохранить себе😅
  • iOS Dev

    Подробное объяснение Enum с примерами кода в Swift Конечно, Enum широко используется в в Swift: If case, guard case, fallthrough и протокол CaseIterable. Все эти термины могут показаться вам знакомыми, если вы много работали с перечислениями. Очень важно знать об этих возможностях, чтобы улучшить читабельность вашего кода, и, что более важно, чтобы уменьшить количество потенциальных ошибок. 📖 В этом материале на примерах объясняется, как именно можно использовать перечисление в тех или иных случаях. ℹ️ Кстати, про 3 способа использования enum, которые должны быть в вашем арсенале, можно прочесть здесь. @iOS Dev
  • Реклама

  • iOS Dev

    Пример работы с Apple Health: авторизация и сохранение данных HealthKit предоставляет центральный репозиторий данных о здоровье и физической форме на iPhone и Apple Watch. С разрешения пользователя приложения взаимодействуют с HealthKit для доступа к этим данным и обмена ими. 📖 В этом коротком материале объясняется, как сохранить данные и информацию в Apple Health с помощью нескольких строк кода. 🛠 Пример приложения. @iOS Dev
  • iOS Dev

    5 советов по использованию брейкпоинтов, о которых вы могли не знать Брейкпоинты в Xcode позволяют нам отлаживать и находить решения для неприятных ошибок. Без них это было бы веселым праздником свалкой print в коде. 📖 В этом материале автор напоминает про следующие возможности: 🔘 Создание брейкпоинтов для всех проектов в Xcode (автоматически). 🔘 Шаринг брейкпоинтов через git. 🔘 Exception breakpoints c заданным действием отладчика. 🔘 Символические брейкпоинты (при вызове определённого метода). А также приводится пример для отладки проблем, связанных с UICollectionView. 🔘 Test failure breakpoint (при сбое тестов). @iOS Dev
  • iOS Dev

    7 способов передать замыкание в качестве аргумента в Swift Рекомендую ознакомиться со следующим постом, если вы только сталкиваетесь с замыканиями: 📖 Для чего нужны closures (замыкания) в Swift и как с ними работать? В самой iOS существует множество функций и методов, которые принимают замыкание в качестве одного из своих аргументов. Например, функции анимации: class func animate(withDuration duration: TimeInterval, animations: @escaping () -> Void) или фильтра: func filter(_ isIncluded: (Self.Element) throws -> Bool) rethrows -> [Self.Element] Существует несколько способов передать замыкание в эти функции. 📖 И об этих способах и пойдет речь в этом материале. @iOS Dev