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

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

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

  • iOS Dev

    Вышел Xcode 13.4 Обновление включает SDK для iOS 15.5, iPadOS 15.5, tvOS 15.4, watchOS 8.5 и macOS Monterey 12.3. 👨‍🔧 Пофиксили некоторые проблемы Swift Playgrounds, краш при экспорте локализаций и баг с генерацией символов для плагинов Quick Look при дистрибуции. Выпуск Xcode 13.4 поддерживает отладку на устройстве для iOS 15.5, iPadOS 15.5, tvOS 15.4, watchOS 8.5 и более поздних версий. 🛠 Для работы Xcode 13.4 требуется Mac под управлением macOS Monterey 12.3 или более поздней версии. ⬇️ Скачать можно здесь. 📝 Полный список обновлений.
  • iOS Dev

    Apple Tower Theatre в Лос-Анджелесе Театр Тауэр — исторический кинотеатр, открывшийся в 1927 году в районе Бродвейских театров в центре Лос-Анджелеса. Возможно, вы видели локации отсюда в некоторых популярных фильмах. Назову некоторые: 🎬 Бойцовский клуб 🎬 Малхолланд драйв 🎬 Престиж 🎬 Полнометражный Твин Пикс 🍎В 2021 году Apple завершила реновацию и открыла его для посетителей. Теперь оно снова доступно для жителей (а главное, гостей) центра Лос-Анджелеса. Этот магазин стал одним из крупнейших реставрационных проектов компании Apple. 📸 Мне посчастливилось побывать тут сегодня, поэтому с радостью делюсь подборкой фото изнутри (и не только).
  • iOS Dev

    Возможности побитовых операций в Swift на примере судоку 💻 Напомним сами себе три правила для решения судоку: 1️⃣ Каждая цифра может быть представлена только один раз в квадрате 3x3. 2️⃣ Каждая цифра не может встречаться дважды в одной строке. 3️⃣ Каждая цифра не может встречаться дважды в одном столбце. 📖 Giuseppe Lanza в своей статье обьясняет, как именно с помощью Swift можно проверить, что заданный судоку существует и удовлетворяет заданному набору правил.
  • Реклама

  • iOS Dev

    Экскурс в историю 💻В 90-х у Apple был собственный ежеквартальный журнал для разработчиков под названием «Develop». 😉 Кстати, вы можете прочитать или полистать его здесь.
  • iOS Dev

    Как работают ranges (диапазоны) в Swift? 🤔 Может показаться, что семейство типов Ranges не содержит никаких сюрпризов, но они скрывают интересные моменты в реализации. Несмотря на сходство между типами семейства Range, все они могут иметь существенные различия. 🕵️‍♂️ На первый взгляд может показаться, что единственное из них заключается в том, как задаются границы диапазона. 📖 В статье рассказывается, так ли это на самом деле. 👏 529 на Medium
    How ranges work in Swift

    Ranges family of types may not seem to bring us surprises, but they hide exciting points in the implementation.

    Medium
  • iOS Dev

    Бонус! Вы же знали, что Mountain View находится совсем рядом с Купертино? 🤖 Посмотрел сегодня (разница с мск 10 часов), как оно в андроиде, и речь тут не совсем про кроссплатформенность, а вернее совсем не про неё. 🚎 На расстоянии пары остановок находится огромный центр разработки, ну и как тут не поделиться с вами парой кадров! Узнали динозавра? Это тот самый, который в Chrome помогает скоротать время без интернета😉 У него даже есть имя — Stan.
  • iOS Dev

    Swift предоставляет три специальные переменные #file, #line и #function, которые соответственно устанавливаются в имя текущего файла, строки и функции. Эти переменные становятся очень полезными при написании функций логирования или, например, тестовых предикатов.
  • iOS Dev

    Нет никакой документации или хотя бы сессий WWDC, которые рассказывали бы о таких изменениях в iOS 15. Но можно использовать реверс-инжиниринг, чтобы понять, что в Apple изменили и помогает ли это вашим приложениям. И если да, то как именно? 📖 Отличная статья о том, что именно управляет запуском приложений. Кстати, вот ряд советов, которые помогут вам ускорить этот процесс: 1️⃣ Уменьшите число динамических фреймворков. 2️⃣ Уменьшите размер приложения в целом. 3️⃣ Вынесите код из +load и статических инициализаторов. 4️⃣ Отложите работу до отрисовки первого фрейма.
  • iOS Dev

    TechTrain 2022 Spring — бесплатный онлайн-фестиваль для всех разработчиков Дата: 14 мая Начало — в 11:45 (Мск, GMT+3) Сезон конференций от JUG Ru Group традиционно начинается с TechTrain. В программе — 8 докладов по разным направлениям: технологии видео и стриминга, тестирование, .NET, мобильная разработка, JavaScript, параллельные и распределенные системы, Java, C++. В рамках направления по мобильной разработке будет доклад «Kotlin Multiplatform. Как превратить нативное приложение в кроссплатформенное». Подробности и регистрация — на сайте фестиваля. Кстати, конференция по мобильной разработке, Mobius пройдет 25 — 27 мая. Подробности — на сайте. Напоминаю вам о промокоде специально для подписчиков нашего канала: iosdev2022JRGpc
  • iOS Dev

    ‼️К слову, про Android (не очень позитивные новости) Коллеги сообщили сегодня, что появилась страница, в которой сказано буквально следующее: В рамках мер по обеспечению соответствия требованиям Google Play блокирует загрузку платных приложений и обновлений для платных приложений в России с 5 мая 2022 года. Больше информации об этом здесь. Не хотелось бы, чтобы корпорация Apple пошла по этому пути.
  • iOS Dev

    Не нравится Xcode? Переходите на Android Studio Улучшайте его, используя расширения! 🧑‍💻 Xcode — наш основной инструмент для разработки. Хотя он хорошо интегрирован в большинство рабочих процессов разработки, время от времени вам может не хватать некоторых базовых функций. 📖 В этой статье вы узнаете, как создать Xcode Source Editor Extension, которое добавляет некоторые дополнительные функции в нашу среду разработки. ℹ️ И хотя процесс создания расширения на первый взгляд может показаться сложной задачей, после изучения XcodeKit, возможно, вы посмотрите на это под другим углом.
  • iOS Dev

    Итерация объектов с помощью метода forEach(_:) является отличной альтернативой классическому циклу for. Однако есть одно ограничение: forEach(_:) не позволяет остановить перебор элементов на полпути. Вдохновившись реализацией Objective-C, мы можем написать расширение, которая позволит остановить этот процесс, если необходимо.
  • iOS Dev

    🛠 Преобразование Sequence с целью удаления всех содержащихся в ней дубликатов — это классический случай использования. 🤔 Для его реализации может возникнуть соблазн преобразовать Sequence в Set, а затем обратно в Array. 🙅‍♂️ Недостатком такого подхода является то, что при этом не сохранится порядок, что явно нежелательно. 🆗 Используя reduce(), можно обеспечить краткую реализацию, сохраняющую порядок, как на скриншоте.
  • iOS Dev

    Практическое руководство по бинарным операциям с использованием типа UInt8 в Swift 🤔 Вы должны знать, что размер типов Int и UInt может отличаться на разных платформах (32 бита vs 64 бита). Сама Apple рекомендует всегда отдавать предпочтение общему типу Int перед всеми остальными вариантами. В большинстве случаев вас не будет волновать длина целочисленных типов. Можно сказать, что Int и UInt довольно часто являются лучшим выбором при написании Swift-кода. ℹ️ За исключением тех случаев, когда ваша цель — написать чрезвычайно экономичный по памяти или низкоуровневый код... 📖 В статье рассматривается, как можно выполнять различные преобразования с использованием нескольких битов.
  • iOS Dev

    iOS Keychain: использование ключей, хранящихся в Secure Enclave 📲 Одной из замечательных аппаратных особенностей iPhone является Secure Enclave — аппаратный элемент, предназначенный для защиты конфиденциальных данных, включая биометрические: отпечатки пальцев, если устройство поддерживает Touch ID, и сканирование лица в случае Face ID. Secure Enclave гарантирует сохранность таких данных, даже если хакер получит доступ к оперативной памяти или дисковому хранилищу. 🔐 ОС или программа может взаимодействовать с Secure Enclave с помощью специальных команд, который не позволяет получить доступ к необработанным данным. В публикации на Medium рассматривается: — Генерация и получение ключей. — Алгоритмы шифрования и дешифрования. — Как это работает в крипто-API Apple. — Механизм для подписания и проверки подлинности. 😅Не стоит бояться констант вида: kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA256AESGCM 📖 Рекомендую материал для расширения вашей базы знаний о безопасности.
  • Реклама

  • iOS Dev

    Как сделать так, чтобы ваше приложение открывали чаще? Сергей Москвин первым внимание на проблему у Яндекса год назад, после чего они исправились. 💬 Если у пользователя множество разных приложений, то скорее всего, на первом экране он разместит самые важные. А остальными будет пользоваться с помощью поиска. Для этого могут помочь ключевые слова. 🔎Они легко добавляются, если вы уже поддерживаете Handoff, то есть бесшовное переключение юзера между разными своими Apple-устройствами, или Siri Shortcuts. Достаточно лишь проставить свойство keywords для объекта NSUserActivity, с которым вы и так работаете. Например: let activity = NSUserActivity(activityType: typeID) activity.keywords = ["слово", "или даже ключевая фраза"] На более серьёзном уровне это можно реализовать, используя CoreSpotlight. ℹ️ Важный момент. Стоит учитывать количество ключевых слов. Чем их больше — тем приложение будет ниже в выдаче. Авито, сделайте, пожалуйста, чтобы я мог вас найти, вбив Avito.
  • iOS Dev

    Как группировать пользовательские уведомления в iOS? 🔊Если ваше приложение показывает уведомления, которые можно разделить на группы — например, сообщения от человека, обновления новостей, результаты спортивного матча и так далее - вы можете заставить iOS сгруппировать их вместе, используя свойства threadIdentifier и summaryArgument в UNMutableNotificationContent. ℹ️ Тогда iOS будет показывать эти сообщения вместе, а не в длинной цепочке вперемешку с другими сообщениями. threadIdentifier — не будет показан пользователям, но это позволит iOS знать, что уведомления должны быть сгруппированы вместе. Если вы, например, делаете аналог Telegram или WhatsApp, то можно использовать ID пользователя (но не имя, которое может быть неуникальным). Если вам нужна дополнительная кастомизация, то можно использовать summaryArgument — эта строка будет показана пользователям. 🔔 И тогда iOS покажет что-то вроде «ещё 5 оповещений от канала iOS Dev».
  • iOS Dev

    Простой способ установки и переключения между разными версиями Xcode 🧑‍💻 Для этого может помочь опенсорсное решение Xcodes.app Что умеет? — Все доступные версии Xcode из данных Xcode Releases. — Установка любой версии Xcode, полностью автоматизированная от начала до конца. Xcodes использует aria2, которая использует до 16 соединений для загрузки, что в 3-5 раз быстрее, чем URLSession. — Автоматическая установка новых релизов! — Удобный выбор активной версии. — Наглядная информация о совместимости, включенные SDK и многое другое. — Поддерживается темный/светлый режим. ☑️ Кстати, есть и консольная версия. ⭐️2900 на Github.