iOS Dev
前往频道在 Telegram
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
显示更多7 878
订阅者
-124 小时
无数据7 天
-5130 天
帖子存档
7 879
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 Dev7 879
Семафоры в Swift и что это такое: определение, немного теории и примеры
ℹ️ Семафоры дают нам возможность контролировать доступ к общему ресурсу. Сам семафор состоит из очереди потоков и значения счетчика (типа
Int).
Очередь потоков используется семафором для отслеживания ожидающих потоков в порядке FIFO (первый поток, введенный в очередь, будет первым, кто получит доступ к общему ресурсу, как только он будет доступен).
Значение счетчика используется семафором, чтобы решить, должен ли поток получить доступ к общему ресурсу или нет. При этом оно изменяется, когда мы вызываем signal() или wait().
📖 В этом материале буквально на пальцах объясняется:
🔘 Что такое семафоры.
🔘 Принципы работы семафоров.
🔘 А также автор приводит два примера для упрощения понимания.
@iOS Dev7 879
Полное руководство по работе с 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
7 879
😧 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 Dev7 879
Как создать идеальный пайплайн (конвейер) на базе Fastlane для iOS
Представьте, вы потратили месяцы на создание приложения, и когда, наконец, пришло время распространять его в App Store, вы понимаете, что это будет непростая задача.
Даже для обычных обнов вы должны выполнять каждый шаг в правильном порядке и в соответствии со строгими спецификациями Apple — вплоть до загрузки сборки и генерации и установки различных метаданных и скриншотов.
Что, если бы вы могли запустить одну команду, чтобы позаботиться обо всех этих требованиях к отправке?
📖 В этом руководстве вы увидите пример работы с fastlane: тут описан процесс подписи, тестирования и развертывания простого приложения со списком дел.
В конце этого руководства у вас должно быть все необходимое для создания идеального пайплайна уже для вашего следующего приложения для iOS.
P.S. Конечно, я понимаю, что многие тут уже слышали и использовали fastlane и для своих, и для приложений компании, но остальным эта информация может помочь.
☁️ И кстати, возможно пора уже наконец, использовать Xcode cloud?
@iOS Dev
7 879
Как заставить сетевой запрос ожидать подключения к Интернету с помощью waitsForConnectivity
Если вы используете
URLSession, когда у пользователя нет подключения к Интернету, ваш запрос немедленно завершится ошибкой.
Однако если вы создадите её с параметром конфигурации waitsForConnectivity, для которого задано значение true, система автоматически подождет некоторое время, чтобы проверить, станет ли подключение доступным, прежде чем пытаться выполнить запрос.
По умолчанию система будет ждать семь дней, чтобы узнать, станет ли доступно подключение к Интернету, но это можно контролировать с помощью свойства timeoutIntervalForResource в вашем конфиге.
ℹ️ Например, вы можете установить интервал с помощью:
config.timeoutIntervalForResource = 60
@iOS Dev7 879
Пример создания простого виджета с помощью WidgetKit
WidgetKit впервые был представлен в
iOS 14 как простая платформа, с помощью которой разработчики могут создавать виджеты для главного экрана.
С тех пор он постепенно превратился в платформу, которая поддерживает некоторые из наиболее ожидаемых функций в iOS 16, а именно виджет блокировки экрана, Live Activities и Dynamic Island.
📖 Эта статья будет полезна новичкам и тем, кто впервые делает виджет для Home Screen.
📖 А вот тут можно прочесть и о другом примере.
@iOS Dev7 879
⚡️ 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 Dev7 879
ℹ️ Обновление в App store при отправке новой сборки
Расширили количество опций для соответствия экспортным требованиям.
Теперь можно выбирать из четырёх вариантов при ответе на вопрос о содержании алгоритмов шифрования:
1️⃣ Алгоритмы шифрования, которые являются частными или не принимаются в качестве стандартных международными организациями по стандартизации (IEEE, IETF, ITU и т. д.).
2️⃣ Стандартные алгоритмы шифрования вместо использования шифрования в составе операционной системы Apple или доступа к таковому (либо в дополнение к нему).
3️⃣ Оба вышеперечисленных алгоритма.
4️⃣ Ни один из вышеперечисленных алгоритмов.
И теперь подсказка про
.plist форсится самим Apple явно (а пост выше был хаком аж полгода назад).
@iOS Dev7 879
Ключевое слово Never в Swift: определение c примерами кода
Never — согласно документации Apple, возвращаемый тип функций, которые не возвращаются нормально, или, если сформулировать иначе, тип без значений.
Тип Never в Swift позволяет вам сообщить компилятору о точке выхода в вашем коде.
Это тип без значений, который предотвращает написание бесполезного кода.
Хотя сам по себе тип Never может быть малоизвестен, возможно, вы уже использовали его в своей кодовой базе (некоторые методы Swift юзают его по дефолту).
📖 В этом материале раскрывается понятие Never, приводятся примеры и объясняется, зачем его в целом можно использовать.
@iOS Dev7 879
👋 Всем привет!
☕️ Coffee&Code
📆 3 и 4 декабря
🍟Оффлайн встречи мобильных разработчиков в формате дружеской беседы.
Мероприятия совершенно бесплатны,
ждём всех желающих, обсудить разработку, задать вопросы, поделиться опытом и знаниями.
🌆Города в которых пройдут встречи:
iOS:
📍АЛМАТЫ
📍АНТАЛЬЯ
📍АСТАНА
📍БАКУ
📍БАЛИ
📍БАТУМИ
📍БИШКЕК
📍ВИЛЬНЮС
📍ГОМЕЛЬ
📍ЕРЕВАН
📍КАЗАНЬ
📍КРАСНОДАР
📍ЛОНДОН
📍МЕРСИН
📍МИНСК
📍МОСКВА
📍РОСТОВ-НА-ДОНУ
📍САНКТ-ПЕТЕРБУРГ
📍СТАМБУЛ
📍ТБИЛИСИ
📍ТЕЛЬ-АВИВ
📍ТОМСК
📍ЯРОСЛАВЛЬ
ANDROID:
📍МОСКВА
📍САНКТ-ПЕТЕРБУРГ
7 879
Настройка Shortcut Actions с параметрами для iOS-приложений с примером кода
📖 В этом материале автор рассказывает о создании нескольких шорткатов, которые позволят выполнять основные математические операции.
Кроме этого, приводится пример модификации шорткатов для показа потенциальных возможностей.
🛠 Если же не вы предпочитаете исследовать код, то готовый проект доступен по этой ссылке.
@iOS Dev
7 879
Регистрация на VK Cup уже началась. Кто не знал – это ежегодный чемпионат по программированию от VK.
Этот год отличается от остальных: задания стали масштабнее и интереснее, а в их подготовке участвует несколько команд VK – ВКонтакте, Дзен, Почта Mail.ru, департамент рекламных технологий. В этом году организаторы подготовили пять треков:
🔘Engine (спортивное программирование) пройдёт на Codeforces (задания для этого трека подготовил сам tourist);
🔘Mobile разработка на iOS или Android, ML, Go и JavaScript пройдут на All Cups.
Вы можете выбрать сразу несколько направлений, если вам уже есть 14 лет.
Квалификационный этап пройдёт с 3 по 18 декабря, а отборочный этап уже в следующем году, с 4 по 16 января. Победителей узнаем уже в феврале: они разделят между собой 4 000 000 рублей, а все финалисты получат электронные сертификаты, подарки и мерч.
Регистрация на участие в треке по олимпиадному программированию доступна здесь, а остальные треки здесь.
@iOS Dev
