iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT
12.4K subscribers
654 photos
63 videos
3.95K links
Самые интересные статьи, видео и новости, связанные с iOS разработкой. Не больше трёх материалов в день.

Лучшее iOS сообщество в Телеге: @iosgt

Размещение рекламы: @tanyasanovna
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Как запустить iPhoneOS 1.0 на эмуляторе QEMU

На QEMU запустили полноценную эмуляцию первого iPod Touch с рендерингом девайса и мультитачем. В статье – много деталей про то, как устроены кишочки загрузки операционной системы и куча ссылок для тех, кто захочет закопаться поподробнее.
Расскажите, чего хотите от Подлодки в 2023

Команда Podlodka iOS Crew собирает идеи того, как можно улучшить конференции. Если вы приходили на прошлые сезоны или смотрели какие-то видео, проходите небольшой опрос. А заодно, если вам есть чем поделиться, или вы готовы ворваться в программный комитет, оставляйте свои контакты!
Первые подробные слухи про Apple Glasses

- Батарея для очков будет носиться на поясе, очки к ней будут подключаться по MagSafe. Заряда должно хватать на два часа.
- Справа будет находиться Digital Crown, использующаяся для переключения между VR и обычным зрением.
- Вроде как будут две версии ремешка для очков: для проствх пользователей и для разработчиков, но в чем будет отличие, пока не понятно.
- Если вам нужны линзы с плюсом/минусом, они будут крепиться на магнитах.
- Моторчики будут подгонять конструкцию под удобную для вас зрительную дистанцию.
- Существующие iOS приложения будут запускаться в 2D режиме, что бы это ни значило.
- Основными методами управления будут голосовое и hand-tracking. Отдельного игрового контроллера не будет.
- На внешней части устройства будет экран, который показывает окружающим эмоции того, кто носит очки.
- Цена, кажется, будет в районе 3000$.
Как работает модификатор aspectRatio

Aspect Ratio в SwiftUI часто работает не так, как от него ожидается. Чтобы разобраться в том, как именно его использование влияет на процесс лэйаута, автор проводит серию экспериментов.
Курсы для начинающих айосеров от Apple

Apple решили собрать свой набор видеоуроков для тех, кто только вкатывается в iOS.

🎨SwiftUI: интерфейсы, навигация, управление стейтом, хранение данных, многопоточность
🧱UIKit: работа с коллекциями, анимации, системные фреймворки
🛠️Работа с сетью и тесты

В процессе прохождения курса разрабатывается несколько учебных проектов. Курс расчитан на 15 часов.
Если ИТ – это ваш конек, то Тинькофф ждет вас 23 января на катке в московском Парке Горького!

Ледовый ИТ-квест, нетворкинг, дискуссии со спикерами в теплом шатре и многое другое. Вечер точно будет насыщенным и приятным. За коньки не беспокойтесь — их выдадут бесплатно.

Не медлите, регистрируйтесь сами и зовите коллег — будет весело!
Как предоставлять Export Compliance Information

Помните тот вопрос, который App Store Connect задает каждый раз при заливе новой версии: «Does your app use encryption?» Держите максимально подробный гайд про то, как следует себя вести.

*️⃣В большинстве случаев, если вы не заполните self-classification report, ничего страшного не случится. Но формально это требуется обязательно, даже если вы просто используете https или встроенные в SDK криптографические алгоритмы.
*️⃣Для бесплатных приложений отчет требуется заполнять только один раз, для платных – каждый год. Заполнить и отправить отчет надо в промежуток с 1 января до 1 февраля.
*️⃣Сгенерировать отчет можно здесь. После этого его надо будет отправить на почты [email protected] и [email protected].
*️⃣Если вы не успели отправить отчеты – не критично. Подождите до следующего 1 января.

Перевод на русский язык
This media is not supported in your browser
VIEW IN TELEGRAM
Коллекция SwiftUI анимаций

Большая подборка сниппетов с анимациями на SwiftUI. Некоторые из них повторяют поведение системных компонентов, а некоторые – уникальные.
Подходы к тестированию в больших компаниях

Огромное обсуждение на форуме Mobile Native Foundation про то, как разные крупные компании подходят к организации тестирования. Ветка довольно старая, но в ней периодически появляются новые истории. Вот несколько интересных хайлайтов:

Испанцы Karumi выложили в опенсорс свои гайды по тестированию (скриншотные тесты, property-based тесты, HTTP стабы)
В Spotify 32.000 тестов разных видов.
Target получают большую часть полезного фидбэка не от тестов, а от программы Beta тестирования в TestFlight.

Если вы занимаетесь организацией процессов релизов или тестирования, то в любом случае рекомендую прочитать всю ветку.
7 февраля протухает WWDR сертификат для валидации покупок

🤔Кого затронет проблема:

Тех, кто валидирует покупки, не используя AppTransaction/Transaction API или серверную ручку verifyReceipt, а вместо этого хардкодит сертификат в приложении и проверяет покупку в клиентском коде.

💻Что делать:

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

Перевод на русский язык
Breaking changes в Swift 6

Разработчики Swift стараются развивать язык, не ломая обратную совместимость на уровне исходников. Это значит, что код, компилируемый Swift 4, будет собираться и Swift 5. Для примера, появление Swift Concurrency ничего не сломало в старом коде.

В Swift 6 должно выкатиться много важных для языка изменений, ради которых готовы пожертвовать обратной совместимостью. Большая их часть касается одной из трех областей:

🏇Data-race safety by default
🏎️Performance predictability
🧱Package ecosystem scalability

В Swift 5.8 появится возможность включить часть из этих ломающих фичей, чтобы вы могли заранее подготовить свою кодовую базу к миграции. Но времени еще много, Swift 6 стоит ждать не раньше, чем через год.
Обзор линкеров для iOS/macOS

- Линкинг – один из этапов билда, на который может уходить довольно много времени, особенно в случае больших приложений. Если вы оптимизируете скорость сборки, это один из кандидатов на улучшение.
- Apple долгое время не вкладывались в ускорение своего основного линкера, ld64. В 2020 году автор выпустил свой форк этого линкера, zld, который работал на 40% быстрее.
- С тех пор появился третий проект, lld, который в основном поддерживается Google и Meta. Кроме того, Apple существенно улучшили ld64, и постепенно набирает обороты быстрый коммерческий линкер sold.
- Сейчас, если вы хотите получить более быстрый линкинг, разумнее всего использовать lld. Это может вам дать ускорение на 50-80%. Обратите внимание – это верно для дебажных билдов, релизные лучше собирать стандартным линкером.
- В статье автор рассказывает, почему решил прекратить поддержку своего линкера, и насыпает много ссылок про технические детали.

Перевод на русский язык
This media is not supported in your browser
VIEW IN TELEGRAM
Новые фичи автокомплита кода в Xcode 14

- Генерация предзаполненных инициализаторов для структур
- Генерация бойлерплейта для Codable
- Корректная обработка параметров структур, у которых есть дефолтное значение
- Автоподстановка аргументов в функцию map, основываясь на названии создаваемой переменной (как в гифке в заголовке)
- Автоматическое выравнивание кода в блоках

Это только часть изменений, все остальные – в статье. У Xcode куча проблем, но попробовать новые фичи все равно стоит – они могут упростить некоторые частве сценарии и сделать вашу жизнь чуть лучше.

Перевод на русский язык
Как поддержать несколько разных виджетов в одном приложении

- Apple предлагает два подхода к поддержке нескольких виджетов: использовать widget bundle или создавать несколько разных widget extensions.
- У бандла есть ограничение на 10 виджетов внутри. Его теоретически можно обойти.
- Apple рекомендует в большинстве случаев использовать бандлы, а ко второму способу обращаться только в специфичных случаях. Например, когда только одному из них для работы требуется какой-то пермишн от пользователя.

Перевод на русский язык
Способы выдать доступ к дебажному меню

*️⃣Показывать меню только пользователям TestFlight, проверяя App Store receipt URL.
*️⃣Показывать меню после серии специальных жестов. Минус в том, что такое меню могут легко обнаружить случайно.
*️⃣Показывать меню тем, кто откроет приложение с помощью специальной URL схемы.
*️⃣Если в приложении есть авторизация, то дебажное меню можно активировать только для определенных аккаунтов.
*️⃣Показывать меню тем, на чьих девайсах стоит специальный Configuration Profile.

Перевод на русский язык
Плейлист докладов с конференции Swiftable

Для затравки несколько самых интересных:

🛗Elevated Swift от Soroush Khanlou: решение задачи Кнута о лифте
🧱Platformizing features at Spotify: про компонентную архитектуру огромного приложения
🎨Adopting SwiftUI at scale: про проблемы, которые встретил Bumble при миграции
Питч по добавлению borrow и inout в Swift

- let и var при инициализации копируют значения. Часть копирований оптимизируется компилятором. Но иногда оставшиеся копирования могут повлечь за собой проблемы с производительностью.
- Кроме того, полноценный интероп Swift и C++ принесет новую проблему – нужно будет уметь работать с типами, которые вообще не поддерживают копирования.
- В питче предлагается добавить в язык два новых ключевика – borrow и inout, которые дадут возможность работать со ссылочными типами.
- По ссылке в заголовке – детальный разбор проблем и дизайн предлагаемого решения. Почитать обсуждение питча можно тут.
Как читать ассемблерный код

Не знаю, зачем вам может пригодиться этот скилл, но вдруг. Автор разбирает два основных ассемблерных синтаксиса, структуру команд, значение регистров, и предлагает несколько простых мнемоник, чтобы вам было проще все запомнить.

Потренироваться и посмотреть на ассемблерный код программ на разных языках можно с помощью сервиса Compiler Explorer.

Перевод на русский язык