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

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

Размещение рекламы: @tanyasanovna
Download Telegram
Опыт работы с App Clip

Ребята из Додо делятся опытом своего эксперимента с App Clip: с какими ограничениями столкнулись, как срезали углы, чтобы ускорить разработку, как тестировали на пользователях. Параллельно нативной реализации, аналогичную фичу сделали на PWA. Так вот, App Clip показывает в 4 раза более высокую конверсию в целевое действие, чем веб-страница.
Дизайн-кит iOS 18 в Figma

Обновленный под iOS 18 дизайн-кит наконец-то добрался и до Figma!
Swift Testing намного медленнее XCTest

На наборе из 1000 простых тестов XCTest отрабатывает за 3 секунды, а Swift Testing – за 85. Репозиторий с бенчмарком здесь.
Записи Swift Server Side Meetup #2

Apple продолжает организовывать митап про серверный Swift. В этот раз в программе два доклада:

👉Как деплоить Vapor на платформу Fly.io с помощью докера
👉Обзор релиза фреймворка Hummingbird 2

Помимо докладов – AMA сессия с участниками рабочей группы Swift on the Server.
Улучшенная поддержка Swift в VSCode

Вместе с выходом Swift 6 значительно улучшилась поддержка языка в VSCode. Что-то подкрутили в самом плагине, что-то получилось благодаря улучшениям в SourceKit-LSP.

👉Интеграция со Swift Testing
👉Отображение code coverage
👉Rename для функций, типов и переменных
👉Интеграция со swift-format
👉Выбор из нескольких Swift тулчейнов
👉Индексация SwiftPM проектов в бэкграунде
Миграция в Swift организацию продолжается

Swift организация на GitHub продолжает пополняться новыми проектами. За последнюю неделю туда переехали основной репозиторий Swift, SwiftPM, плагин для VSCode, LSP и много более мелких реп.
Уязвимости в CocoaPods

В CocoaPods обнаружили сразу несколько очень неприятных уязвимостей, которые уже исправлены:

👉Злоумышленники могли получить контроль над заброшенными подами, и, как результат, добавить туда вредоносный код, который подтянулся бы в приложения без лока на определенную версию библиотеки.
👉Авторизация через email была реализована небезопасно, из-за чего злоумышленники могли исполнять произвольный код на сервере CocoaPods, отвечающем за Podspec'и.
👉Злоумышленники могли получить доступ к авторизационным токенам разработчиков и подменять пакеты прямо на сервере.

Обязательно посмотрите чек-лист того, что вам надо сделать с вашим проектом, чтобы проверить, не стали ли вы жертвой подмены пакетов.
Клиент-серверное приложение на вебсокетах с фреймворком Hummingbird

Подробный туториал по тому, как написать простые клиент и сервер для приложения чата, которые будут общаться с помощью вебсокетов, на фреймворке Hummingbird.
Как работают очереди

Отличный пост про то, как работают разные типы очередей, по каким параметрам их можно сравнивать друг с другом, и как приоритизация запросов влияет на них. Самое классное – все это с интерактивными примерами!
Expicitly built modules в Xcode 16

В Xcode 16 завезли фичу "Explicitly built modules", которая должна помогать с ускорением билдов и делать ошибки более информативными. В статье детально рассказывается, как эта фича ускоряет работу xcodebuild, и как ее можно включить для своего проекта.

На Beta 1, правда, ускорения пока не заметно.
Про Meridian, еще один серверный фреймворк

Meridian – фреймворк для разработки бэкенда на Swift. Его отличительная особенность – API, похожий на SwiftUI. Еще из интересного:

👉Есть поддержка вебсокетов
👉async/await из коробки
👉Можно удобно объявлять свой Middleware
This media is not supported in your browser
VIEW IN TELEGRAM
Сложности в работе с кареткой

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

А если вы захотите узнать больше про разные интересные моменты в том, как работает рендеринг текста, напоминаю о чудесном выпуске Подлодки с Тонским на эту тему!
This media is not supported in your browser
VIEW IN TELEGRAM
TextRenderer в SwiftUI

В SwiftUI появился новый протокол TextRenderer, который заменяет NSAttributedString. В статье разбирается, как с его помощью подсветить часть символов в строке.
Как создать кастомный SF Symbol

Вы можете пользоваться не только готовыми SF Symbols, но и создавать полностью свои. В туториале разбираются все шаги – от создания векторной иконки в Sketch до использования ее в коде приложения.
Blend modes в SwiftUI

Гайд по тому, как работают разные режимы смешивания цветов в SwiftUI, и какими формулами они описываются.
Что нового в UI тестах в Xcode 16

👉Функция waitForNonExistence(withTimeout:), которая позволяет привязаться к исчезновению какого-то элемента.
👉Функция wait(for:toEqual:timeout:), которая дает привязаться к моменту, когда свойство элемента будет равняться определенному значению.
Проблемы использования NSCopying со Swift

Из-за особенностей того, как в Objective-C работают designated initializer'ы, наследование от классов, реализующих протокол NSCopying, в Swift может привести к неприятным крешам. Инженеры PSPDFKit рассказывают о том, как их можно попробовать обойти.
This media is not supported in your browser
VIEW IN TELEGRAM
Как принципы дизайна реализуются в конкретных решениях

Очень крутой обзор приложения Family, крипто-кошелька с топовым дизайном и анимациями. В посте разбираются все принципы дизайна, которым следовала команда, и то, в какие паттерны интерфейса и анимаций они превращались. Если вы ищете вдохновения – рекомендую!
Лонгрид про макросы

Огромная статья про то, как работают макросы в Swift: их роли, реализация конкретных макросов, устройство библиотеки SwiftSyntax, инструменты для их тестирования и влияние на перфоманс проекта.