uk
Feedback
iOS Dev

iOS Dev

Відкрити в Telegram

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

Показати більше
8 000
Підписники
-124 години
+467 днів
+7930 день
Архів дописів
iOS Dev
8 001
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
8 001
Почелленджите свои скилы iOS-разработчика на хардовом тесте и получите подарок Под Новый год сервис развития карьеры Эйч собр
Почелленджите свои скилы iOS-разработчика на хардовом тесте и получите подарок Под Новый год сервис развития карьеры Эйч собрал 20 ведущих IT-команд и устроил Междусобойчик. Это такой формат знакомства с компаниями: можно заранее разобраться — мэтч у вас или нет, а заодно проявить себя на профильном тесте. iOS-разработку в Междусобойчике представляет команда Альфа-Банка. Правила участия простые: 1. Выбираете профессию на сайте 2. Проходите хардовый тест Вопросы составил Яндекс Практикум, так что удастся почелленджить свои скилы: вспоминайте всё, что знаете про Swift и его стандартную библиотеку. 3. Получаете цифровые подарки Например, сертификаты на карьерные консультации Эйч, спорт от Фитмоста, книги МИФ и курсы Синхронизации, а также мерч от компаний. Пройти хардовый тест по iOS-разработке и получить новогодние подарки можно по ссылке. @iOS Dev

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

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

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

iOS Dev
8 001

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

iOS Dev
8 001
RunLoop.main и DispatchQueue.main: объяснение различий RunLoop.main и DispatchQueue.main часто используются в качестве планировщиков в Combine. 📖 Во время код-ревью автор материала сталкивался с непоследовательностью в использовании обоих, и решил объяснить, в чём различия. Статья разбита на следующие блоки: 1️⃣ Что такое RunLoop.main. 2️⃣ Что такое DispatchQueue.main. 3️⃣ Различия между RunLoop.main и DispatchQueue.main. 4️⃣ Нужно ли использовать RunLoop.main? Спойлер: Наиболее существенное различие между RunLoop.main и DispatchQueue.main заключается в том, что последний выполняется напрямую, когда RunLoop может быть занят. Например, представление загруженного изображения во время прокрутки будет немедленно отображаться только при использовании DispatchQueue.main в качестве планировщика. @iOS Dev

iOS Dev
8 001
Семафоры в Swift и что это такое: определение, немного теории и примеры ℹ️ Семафоры дают нам возможность контролировать досту
Семафоры в Swift и что это такое: определение, немного теории и примеры ℹ️ Семафоры дают нам возможность контролировать доступ к общему ресурсу. Сам семафор состоит из очереди потоков и значения счетчика (типа Int). Очередь потоков используется семафором для отслеживания ожидающих потоков в порядке FIFO (первый поток, введенный в очередь, будет первым, кто получит доступ к общему ресурсу, как только он будет доступен). Значение счетчика используется семафором, чтобы решить, должен ли поток получить доступ к общему ресурсу или нет. При этом оно изменяется, когда мы вызываем signal() или wait(). 📖 В этом материале буквально на пальцах объясняется: 🔘 Что такое семафоры. 🔘 Принципы работы семафоров. 🔘 А также автор приводит два примера для упрощения понимания. @iOS Dev

iOS Dev
8 001
Полное руководство по работе с URL в Swift (и SwiftUI) URL-адреса используются повсеместно, и приложения для iOS не являются
Полное руководство по работе с URL в Swift (и SwiftUI) URL-адреса используются повсеместно, и приложения для iOS не являются исключением. Наиболее распространенными примерами являются веб-контент, локальные файлы и конечные точки REST API. 📖 В этой статье разбираются пошагово следующие аспекты: 1️⃣ Что такое URL и как использовать URL в Swift. 2️⃣ Как URL-адреса идентифицируют локальные и веб-ресурсы. 3️⃣ Управление URL и преобразование их в более удобные типы. 4️⃣ Создание URL-адреса и проверка его отдельных компонентов. 5️⃣ Использование URL для чтения и записи в файловой системе устройства. 6️⃣ Показаны примеры работы с URL-адресами в приложениях SwiftUI. Рекомендую после этого материала ознакомиться и с более любопытной темой: 📖 Создание переиспользуемой системы для сложных URL-запросов с помощью Swift. @iOS Dev

iOS Dev
8 001
😧 RunLoop больше не будет доступен. И вот почему На платформах Darwin разработчики Apple обязаны поддерживать совместимость со всеми существующими API. Однако они решили сосредоточить нашу новую унифицированную реализацию на наиболее полезные API-интерфейсы Swift. Это означает отход от цели swift-corelibs-foundation о 100% совместимости исходного кода. Многие функции Foundation были включены в состав прямой поддержки языка. Но следующие типы в настоящее время не планируется переносить в новый пакет: 🔘 RunLoop, Lock, OperationQueue, Stream, Port, Timer и т. д. — заменены структурированным параллелизмом. 🔘 Коллекции с NS-префиксами — изначально предусмотрены для совместимости, но полезность очень мала. 🔘 NSCoding, NSKeyedArchiver — заменены на Codable. 🔘 Progress — внешних зависимостей нет, но пересечение со структурированным параллелизмом еще не полностью разработано. А вот на Darwin платформа Foundation продолжит поддерживать реализации этих типов в сочетании C, Objective-C и Swift. @iOS Dev

iOS Dev
8 001

iOS Dev
8 001
Как создать идеальный пайплайн (конвейер) на базе Fastlane для iOS Представьте, вы потратили месяцы на создание приложения, и
Как создать идеальный пайплайн (конвейер) на базе Fastlane для iOS Представьте, вы потратили месяцы на создание приложения, и когда, наконец, пришло время распространять его в App Store, вы понимаете, что это будет непростая задача. Даже для обычных обнов вы должны выполнять каждый шаг в правильном порядке и в соответствии со строгими спецификациями Apple — вплоть до загрузки сборки и генерации и установки различных метаданных и скриншотов. Что, если бы вы могли запустить одну команду, чтобы позаботиться обо всех этих требованиях к отправке? 📖 В этом руководстве вы увидите пример работы с fastlane: тут описан процесс подписи, тестирования и развертывания простого приложения со списком дел. В конце этого руководства у вас должно быть все необходимое для создания идеального пайплайна уже для вашего следующего приложения для iOS. P.S. Конечно, я понимаю, что многие тут уже слышали и использовали fastlane и для своих, и для приложений компании, но остальным эта информация может помочь. ☁️ И кстати, возможно пора уже наконец, использовать Xcode cloud? @iOS Dev

iOS Dev
8 001
Как заставить сетевой запрос ожидать подключения к Интернету с помощью waitsForConnectivity Если вы используете URLSession, к
Как заставить сетевой запрос ожидать подключения к Интернету с помощью waitsForConnectivity Если вы используете URLSession, когда у пользователя нет подключения к Интернету, ваш запрос немедленно завершится ошибкой. Однако если вы создадите её с параметром конфигурации waitsForConnectivity, для которого задано значение true, система автоматически подождет некоторое время, чтобы проверить, станет ли подключение доступным, прежде чем пытаться выполнить запрос. По умолчанию система будет ждать семь дней, чтобы узнать, станет ли доступно подключение к Интернету, но это можно контролировать с помощью свойства timeoutIntervalForResource в вашем конфиге. ℹ️ Например, вы можете установить интервал с помощью: config.timeoutIntervalForResource = 60 @iOS Dev

iOS Dev
8 001
Пример создания простого виджета с помощью WidgetKit WidgetKit впервые был представлен в iOS 14 как простая платформа, с помо
Пример создания простого виджета с помощью WidgetKit WidgetKit впервые был представлен в iOS 14 как простая платформа, с помощью которой разработчики могут создавать виджеты для главного экрана. С тех пор он постепенно превратился в платформу, которая поддерживает некоторые из наиболее ожидаемых функций в iOS 16, а именно виджет блокировки экрана, Live Activities и Dynamic Island. 📖 Эта статья будет полезна новичкам и тем, кто впервые делает виджет для Home Screen. 📖 А вот тут можно прочесть и о другом примере. @iOS Dev

iOS Dev
8 001
⚡️ Apple объявила о самом большом обновлении цен в App Store с момента запуска Разработчики также получат больше гибкости для
⚡️ Apple объявила о самом большом обновлении цен в App Store с момента запуска Разработчики также получат больше гибкости для глобального управления ценообразованием 1️⃣ Добавлено 700 новых ценовых пунктов. 2️⃣ Будут добавлены новые инструменты для упрощения установки цен в каждом регионе, а также управление обменным курсом. 3️⃣ Доступно 45 валют в 175 магазинах для подписок c сегодняшнего дня. А с 2023 обещают внедрить это и для встроенных покупок. 4️⃣ В рамках обновленной системы ценообразования в App Store все разработчики смогут выбирать из 900 ценовых пунктов, что почти в 10 раз превышает ранее доступное количество. 100 более высоких ценовых категорий, доступны по запросу. Например, в рублях максимальная цена теперь может быть целых 900 000. Чтобы предоставить разработчикам по всему миру еще большую гибкость, цены можно будет выставить с $ 0,29 и шагом в 10 центов вплоть до $10 000 долларов. Вспоминаем приложение I am rich? Начиная с сегодняшнего дня, разработчики приложений c подпиской смогут выбирать любой стор в качестве основы для автоматического формирования цен в других 174 магазинах и 44 валютах. По-прежнему будет доступна возможность устанавливать и произвольную цену для каждой страны. 📄 Документ со всеми возможными ценами доступен здесь. 🔗 Первоисточник. @iOS Dev

iOS Dev
8 001

iOS Dev
8 001
ℹ️ Обновление в App store при отправке новой сборки Расширили количество опций для соответствия экспортным требованиям. Тепер
ℹ️ Обновление в App store при отправке новой сборки Расширили количество опций для соответствия экспортным требованиям. Теперь можно выбирать из четырёх вариантов при ответе на вопрос о содержании алгоритмов шифрования: 1️⃣ Алгоритмы шифрования, которые являются частными или не принимаются в качестве стандартных международными организациями по стандартизации (IEEE, IETF, ITU и т. д.). 2️⃣ Стандартные алгоритмы шифрования вместо использования шифрования в составе операционной системы Apple или доступа к таковому (либо в дополнение к нему). 3️⃣ Оба вышеперечисленных алгоритма. 4️⃣ Ни один из вышеперечисленных алгоритмов. И теперь подсказка про .plist форсится самим Apple явно (а пост выше был хаком аж полгода назад). @iOS Dev

iOS Dev
8 001
Ключевое слово Never в Swift: определение c примерами кода Never — согласно документации Apple, возвращаемый тип функций, кот
Ключевое слово Never в Swift: определение c примерами кода Never — согласно документации Apple, возвращаемый тип функций, которые не возвращаются нормально, или, если сформулировать иначе, тип без значений. Тип Never в Swift позволяет вам сообщить компилятору о точке выхода в вашем коде. Это тип без значений, который предотвращает написание бесполезного кода. Хотя сам по себе тип Never может быть малоизвестен, возможно, вы уже использовали его в своей кодовой базе (некоторые методы Swift юзают его по дефолту). 📖 В этом материале раскрывается понятие Never, приводятся примеры и объясняется, зачем его в целом можно использовать. @iOS Dev

iOS Dev - Статистика та аналітика Telegram каналу @iosdev