iOS Dev
Ir al canal en Telegram
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
Mostrar más7 984
Suscriptores
-124 horas
+107 días
+7530 días
Archivo de publicaciones
7 982
Mobius 2022 Spring — три дня докладов, воркшопов, круглых столов и дискуссий обо всем, чем живет мобильная разработка.
Конференция пройдет 25–27 мая, на 80% в онлайне, но в этот раз будет еще и offline-день. 22 июня в Санкт-Петербурге соберутся все, кто соскучился по живым выступлениям, дискуссионным зонам и тусовкам.
Примерно треть докладов посвящена разработке для iOS — от оптимизаций до тестирования и UX. Вот некоторые из тем:
— «Inlinable-оптимизации в Swift».
— «Статический анализатор техдолга».
— «Доступность в Яндекс Go».
— «За гранью AppStore: MDM, Supervised и другие возможности для разработки в бизнес-сегменте».
— «Ускорение разработки при помощи Unit-теста».
— «Independency: сбрасываем оковы CocoaPods».
Найти полную программу и купить билеты можно на сайте. А по этому промокоду вы получите скидку на персональный билет:
iosdev2022JRGpc7 982
Возможности побитовых операций в Swift на примере судоку
💻 Напомним сами себе три правила для решения судоку:
1️⃣ Каждая цифра может быть представлена только один раз в квадрате 3x3.
2️⃣ Каждая цифра не может встречаться дважды в одной строке.
3️⃣Каждая цифра не может встречаться дважды в одном столбце.
📖 Giuseppe Lanza в своей статье обьясняет, как именно с помощью Swift можно проверить, что заданный судоку существует и удовлетворяет заданному набору правил.
7 982
Как работают ranges (диапазоны) в Swift?
🤔 Может показаться, что семейство типов Ranges не содержит никаких сюрпризов, но они скрывают интересные моменты в реализации.
Несмотря на сходство между типами семейства
Range, все они могут иметь существенные различия.
🕵️♂️ На первый взгляд может показаться, что единственное из них заключается в том, как задаются границы диапазона.
📖 В статье рассказывается, так ли это на самом деле.
👏 529 на Medium7 982
Бонус! Вы же знали, что Mountain View находится совсем рядом с Купертино?
🤖 Посмотрел сегодня (разница с мск 10 часов), как оно в андроиде, и речь тут не совсем про кроссплатформенность, а вернее совсем не про неё.
🚎 На расстоянии пары остановок находится огромный центр разработки, ну и как тут не поделиться с вами парой кадров!
Узнали динозавра? Это тот самый, который в Chrome помогает скоротать время без интернета😉 У него даже есть имя — Stan.
7 982
Вторая часть поста про путешествие к центру земли Apple Visitor Center
🙌🏻В самом центре, конечно же, все в наличии. Даже мак студио, на которые сроки доставки по США сейчас по несколько десятков дней.
🤗 Есть стенд специально для поклонников Hermes, и уникальный раздел с мерчем Apple, который официально не продаётся нигде, кроме этого места.
👩💻👨💻Кстати, целый день там проходят сессии для пользователей, где сотрудники делятся приёмами как, например, улучшить качество фоток или показывают какие-то фишки Apple Watch.
Я посетил одну из них про фото, и могу поделиться выводом, что при таком освещении как в этом центре, любые фото будут выглядеть превосходно.
7 982
Какой же канал об iOS-разработке без упоминания сердца компании Apple!
😎 Удалось побывать в Сан-Франциско, и, конечно, я бы не простил себе, если бы не получилось заглянуть в Apple Visitor Center.
Не обошлось без курьеза, когда изначально карты привели меня ко входу для сотрудников Apple. Но приветливый охранник вручил визитку и сказал, что нужный вход находится всего лишь в 2.5 км.
Ну, по крайней мере, заблудиться там сложно (парк же круглый).
Несмотря на то, что Infinite Loop закрыт для публичного посещения, никто не мешает посмотреть, что же рядом.
Решил выложить немного фото прямо отсюда☺️
7 982
‼️Apple отключила оплату за подписки и приложения в App Store со счёта мобильного у «Мегафона», Yota и Tele2.
Теперь эта возможность осталась только у МТС и «Билайна».
7 982
Любая попытка получить доступ к массиву, выходящему за его границы, приведет к крашу.
Хотя для предотвращения таких сбоев мы часто пишем
if index < array.count { array[index] }, такой подход выглядит громоздким. Хотя и рабочим.
👍 Замечательно то, что это условие можно заключить в subscript, который будет работать с любой коллекцией.7 982
Что скрыто внутри Code Signing?
Подавляющему большинству разработчиков не нужно знать, как работает подписание кода.
Для этого можно использовать Xcode или инструмент для Code Signing, а те позаботятся обо всех тонкостях.
Если мы и сталкиваемся с проблемами, то эти задачи обычно связаны с концепциями высокого уровня - подписанием идентификационных данных, прав доступа, профилей - а не с основной реализацией Code Signing.
🙇♂️Однако это не всегда так. Время от времени возникают проблемы, когда необходимо понять, как же на самом деле это работает.
Делюсь с вами тремя материалами от Apple на эту тему:
1️⃣ TN3125: Provisioning Profiles
2️⃣ TN3126: Hashes
3️⃣ TN3127: Requirements
7 982
Туториал по работе с отслеживанием изображений в ARKit
🧑💻Разработчики могут использовать камеру для обнаружения и отслеживания известных изображений с помощью API под названием
ARImageTrackingConfiguration.
Где бы такое можно было использовать?
Если вы уже смотрели фильм о Гарри Поттере, то наверняка помните волшебную газету с анимированными фотографиями.
🛠 С помощью конфигурации отслеживания изображений мы можем воплотить это в реальность с помощью приложения ARKit.
📖 В этом туториале вы узнаете, как использовать ARImageTrackingConfiguration для выполнения отслеживания изображений и создания AR-приложения для газеты, аналогичной той, что появилась в фильме о Гарри Поттере.
📹 А если хотите посмотреть на результат, то тут ссылка на видео.7 982
Swift предоставляет три специальные переменные
#file, #line и #function, которые соответственно устанавливаются в имя текущего файла, строки и функции.
Эти переменные становятся очень полезными при написании функций логирования или, например, тестовых предикатов.7 982
Нет никакой документации или хотя бы сессий WWDC, которые рассказывали бы о таких изменениях в iOS 15. Но можно использовать реверс-инжиниринг, чтобы понять, что в Apple изменили и помогает ли это вашим приложениям. И если да, то как именно?
📖 Отличная статья о том, что именно управляет запуском приложений.
Кстати, вот ряд советов, которые помогут вам ускорить этот процесс:
1️⃣ Уменьшите число динамических фреймворков.
2️⃣ Уменьшите размер приложения в целом.
3️⃣ Вынесите код из +load и статических инициализаторов.
4️⃣ Отложите работу до отрисовки первого фрейма.
7 982
TechTrain 2022 Spring — бесплатный онлайн-фестиваль для всех разработчиков
Дата: 14 мая
Начало — в 11:45 (Мск, GMT+3)
Сезон конференций от JUG Ru Group традиционно начинается с TechTrain. В программе — 8 докладов по разным направлениям: технологии видео и стриминга, тестирование, .NET, мобильная разработка, JavaScript, параллельные и распределенные системы, Java, C++.
В рамках направления по мобильной разработке будет доклад «Kotlin Multiplatform. Как превратить нативное приложение в кроссплатформенное».
Подробности и регистрация — на сайте фестиваля.
Кстати, конференция по мобильной разработке, Mobius пройдет 25 — 27 мая. Подробности — на сайте.
Напоминаю вам о промокоде специально для подписчиков нашего канала:
iosdev2022JRGpc7 982
‼️К слову, про Android (не очень позитивные новости)
Коллеги сообщили сегодня, что появилась страница, в которой сказано буквально следующее:
В рамках мер по обеспечению соответствия требованиям Google Play блокирует загрузку платных приложений и обновлений для платных приложений в России с 5 мая 2022 года.
Больше информации об этом здесь.
Не хотелось бы, чтобы корпорация Apple пошла по этому пути.
7 982
Не нравится Xcode? Переходите на Android Studio Улучшайте его, используя расширения!
🧑💻 Xcode — наш основной инструмент для разработки.
Хотя он хорошо интегрирован в большинство рабочих процессов разработки, время от времени вам может не хватать некоторых базовых функций.
📖 В этой статье вы узнаете, как создать
Xcode Source Editor Extension, которое добавляет некоторые дополнительные функции в нашу среду разработки.
ℹ️ И хотя процесс создания расширения на первый взгляд может показаться сложной задачей, после изучения XcodeKit, возможно, вы посмотрите на это под другим углом.7 982
Итерация объектов с помощью метода
forEach(_:) является отличной альтернативой классическому циклу for.
Однако есть одно ограничение: forEach(_:) не позволяет остановить перебор элементов на полпути.
Вдохновившись реализацией Objective-C, мы можем написать расширение, которая позволит остановить этот процесс, если необходимо.7 982
🛠 Преобразование
Sequence с целью удаления всех содержащихся в ней дубликатов — это классический случай использования.
🤔 Для его реализации может возникнуть соблазн преобразовать Sequence в Set, а затем обратно в Array.
🙅♂️ Недостатком такого подхода является то, что при этом не сохранится порядок, что явно нежелательно.
🆗 Используя reduce(), можно обеспечить краткую реализацию, сохраняющую порядок, как на скриншоте.7 982
Практическое руководство по бинарным операциям с использованием типа UInt8 в Swift
🤔 Вы должны знать, что размер типов Int и UInt может отличаться на разных платформах (32 бита vs 64 бита). Сама Apple рекомендует всегда отдавать предпочтение общему типу Int перед всеми остальными вариантами.
В большинстве случаев вас не будет волновать длина целочисленных типов. Можно сказать, что Int и UInt довольно часто являются лучшим выбором при написании Swift-кода.
ℹ️ За исключением тех случаев, когда ваша цель — написать чрезвычайно экономичный по памяти или низкоуровневый код...
📖 В статье рассматривается, как можно выполнять различные преобразования с использованием нескольких битов.
7 982
iOS Keychain: использование ключей, хранящихся в Secure Enclave
📲 Одной из замечательных аппаратных особенностей iPhone является Secure Enclave — аппаратный элемент, предназначенный для защиты конфиденциальных данных, включая биометрические: отпечатки пальцев, если устройство поддерживает Touch ID, и сканирование лица в случае Face ID.
Secure Enclave гарантирует сохранность таких данных, даже если хакер получит доступ к оперативной памяти или дисковому хранилищу.
🔐 ОС или программа может взаимодействовать с Secure Enclave с помощью специальных команд, который не позволяет получить доступ к необработанным данным.
В публикации на Medium рассматривается:
— Генерация и получение ключей.
— Алгоритмы шифрования и дешифрования.
— Как это работает в крипто-API Apple.
— Механизм для подписания и проверки подлинности.
😅Не стоит бояться констант вида:
kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA256AESGCM
📖 Рекомендую материал для расширения вашей базы знаний о безопасности.
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
