ch
Feedback
iOS Dev

iOS Dev

前往频道在 Telegram

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

显示更多
7 878
订阅者
-124 小时
无数据7 天
-5130 天
帖子存档
iOS Dev
7 878
URLSession: распространенные ошибки при выполнении задач фоновой загрузки и скачивания URLSession позволяет загружать и загру
URLSession: распространенные ошибки при выполнении задач фоновой загрузки и скачивания URLSession позволяет загружать и загружать файлы, когда приложение работает в фоновом режиме. Все, кто так или иначе работал с URLSession, понимают, что иногда возникают сложности при реализации загрузки нескольких файлов или работе в бэкграунде. Реализация поддержки передачи данных в фоновом режиме сопряжена со множеством подводных камней. Например, Xcode debugger может помешать в отладке, а реальное устройство, наоборот, помочь. 📖 В этом посте автор делится своим опытом о столкновении с некоторыми распространенными ловушками. Кстати, рекомендую прочесть про способ ожидания подключения к интернету. А ещё есть материал о написании API-клиента с использованием async/await. @iOS Dev

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

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

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

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

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

iOS Dev
7 878

iOS Dev
7 878
Многопоточность в 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
7 878
Подробное объяснение Enum с примерами кода в Swift Конечно, Enum широко используется в в Swift: If case, guard case, fallthro
Подробное объяснение Enum с примерами кода в Swift Конечно, Enum широко используется в в Swift: If case, guard case, fallthrough и протокол CaseIterable. Все эти термины могут показаться вам знакомыми, если вы много работали с перечислениями. Очень важно знать об этих возможностях, чтобы улучшить читабельность вашего кода, и, что более важно, чтобы уменьшить количество потенциальных ошибок. 📖 В этом материале на примерах объясняется, как именно можно использовать перечисление в тех или иных случаях. ℹ️ Кстати, про 3 способа использования enum, которые должны быть в вашем арсенале, можно прочесть здесь. @iOS Dev

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

iOS Dev
7 878

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

iOS Dev
7 878
7 способов передать замыкание в качестве аргумента в Swift Рекомендую ознакомиться со следующим постом, если вы только сталки
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

iOS Dev
7 878
Почелленджите свои скилы iOS-разработчика на хардовом тесте и получите подарок Под Новый год сервис развития карьеры Эйч собр
Почелленджите свои скилы iOS-разработчика на хардовом тесте и получите подарок Под Новый год сервис развития карьеры Эйч собрал 20 ведущих IT-команд и устроил Междусобойчик. Это такой формат знакомства с компаниями: можно заранее разобраться — мэтч у вас или нет, а заодно проявить себя на профильном тесте. iOS-разработку в Междусобойчике представляет команда Альфа-Банка. Правила участия простые: 1. Выбираете профессию на сайте 2. Проходите хардовый тест Вопросы составил Яндекс Практикум, так что удастся почелленджить свои скилы: вспоминайте всё, что знаете про Swift и его стандартную библиотеку. 3. Получаете цифровые подарки Например, сертификаты на карьерные консультации Эйч, спорт от Фитмоста, книги МИФ и курсы Синхронизации, а также мерч от компаний. Пройти хардовый тест по iOS-разработке и получить новогодние подарки можно по ссылке. @iOS Dev

iOS Dev
7 878
Локальное управление несколькими версиями Swift Самый распространенный способ установки версии Swift — это загрузка Xcode. В
Локальное управление несколькими версиями Swift Самый распространенный способ установки версии Swift — это загрузка Xcode. В некоторых случаях может потребоваться загрузить тулчейн, не связанный с релизной версией Xcode, например для другой архитектуры вроде WebAssembly. 📖 В этой статье объясняется, как установить и использовать тулчейн Swift как вручную, так и с помощью инструмента командной строки под названием swiftenv (⭐1.9k на github). @iOS Dev

iOS Dev
7 878
Как создать виджет для экрана блокировки в iOS? В iOS 16 Apple серьезно переработала экран блокировки. Поскольку виджеты для
Как создать виджет для экрана блокировки в iOS? В iOS 16 Apple серьезно переработала экран блокировки. Поскольку виджеты для хоумскрина и для локскрина работают на WidgetKit, способ создания для экрана блокировки очень похож на вот этот. 📖 В этом материале рассказывается о необходимых шагах и приводится пример кода для создания такого виджета. @iOS Dev

iOS Dev
7 878
Метатипы в Swift: что такое .self, .Type и .Protocol? Метатипы очень полезны в Swift, и вы наверняка использовали их неоднокр
Метатипы в Swift: что такое .self, .Type и .Protocol? Метатипы очень полезны в Swift, и вы наверняка использовали их неоднократно. К сожалению, в коде они выглядят довольно странно, что может вызвать некоторую путаницу при попытке понять, что они собой представляют на самом деле. 📖 В этом материале Бруно Роша подробно объясняет следующее: 1️⃣ Что представляет собой метатип? 2️⃣ Отличия динамических метатипов от статических. 3️⃣ Метатипы протоколов. 4️⃣ Ещё больше вариантов использования метатипов. @iOS Dev

iOS Dev
7 878

iOS Dev
7 878
Объяснение параллелизма: как создать многопоточное приложение для iOS Параллелизм в iOS — обширная (даже гигантская) тема. Автор пишет, что если вы никогда раньше не использовали GCD, эта статья — отличное место для начала. В частности, объясняется разница между последовательными и параллельными очередями (serial и concurrent), а также различия между синхронным и асинхронным выполнением. 📖 А сам материал разбит на следующие части: 1️⃣ Параллелизм и Grand Central Dispatch. 2️⃣ Dispatch Queues. 3️⃣ Пример использования DispatchWorkItem. 4️⃣ Sync vs Async. 5️⃣ Что может вызвать deadlock и для чего можно использовать async. 6️⃣ Serial vs Concurrent. 7️⃣ Подводные камни. Кстати, тут интересный пример про машину, блокирующую скорую на узкой улице. Также автор затрагивает (правда, не углубляясь в тему) взрыв потоков и гонки. 🛠 Приложение из статьи доступно на github. @iOS Dev

iOS Dev
7 878
Освоить мобильную разработку с нуля можно на курсах Яндекс Практикума → Android-разработка: 12 месяцев, языки Java и Kotlin →
Освоить мобильную разработку с нуля можно на курсах Яндекс Практикума → Android-разработка: 12 месяцев, языки Java и Kotlin → iOS-разработка: 10 месяцев, язык Swift На курсах вы научитесь разрабатывать и выпускать приложение с нуля: — Освоите синтаксис языка, работу в среде разработки. — Поработаете с системой контроля версий Git, чтобы создавать проекты с другими разработчиками. — Освоите вёрстку, навигацию, обработку жестов. — Научитесь хранить и обрабатывать данные. — Сможете настраивать клиент-серверное взаимодействие, делать запросы, работать с API, чтобы приложение получало и отдавало данные в бэкенд-разработку — Научитесь проектировать архитектуру с помощью основных шаблонов и паттернов — Поймёте, как тестировать код и пользовательские сценарии — Разовьёте софтскилы, которых ждут от разработчиков работодатели: проведение ревью своего и чужого кода, работа с обратной связью, декомпозиция и оценка задач, коммуникация, командная работа. На каждом курсе будет проектная работа: вы создадите три учебных приложения. — Android-разработка: приложение для работы с контактами, для составление плейлистов и афиша. — iOS-разработка: приложение-маркетплейс, трекер, квиз и поисковик изображений. Попробуйте и напишите своё первое приложение бесплатно: Android-разработка iOS-разработка @iOS Dev