Как работают mergeable libraries
В Xcode 15 появился новый тип библиотек – mergeable libraries. Они оптимизированы одновременно под то, чтобы размер приложения и время билда не увеличивались, и под то, чтобы не росло время запуска приложения. Короче говоря, совмещают в себе все лучшее от static libraries и dynamic frameworks.
В статье разбирается, как именно они работают и как их можно использовать в многомодульном проекте.
Курс «Английский для разработчиков» Яндекс Практикума
Для тех, кто хочет изменить свою профессиональную жизнь и работать в международной команде.
Обучение построено не вокруг абстрактной теории, а вокруг рабочих ситуаций и полезных для карьеры навыков:
✋Стендапы. Подготовитесь обсуждать задачи, задавать вопросы и просить о помощи.
👨💻 Работа с заказчиками. Научитесь презентовать решения, говорить про баги и фичи.
📣 Митапы. Сможете понимать на слух доклады и выступать сами.
😎 Собеседования. Научитесь рассказывать про свой опыт, понимать вопросы и тактично переспрашивать.
👯 Неформальное общение с коллегами. Сможете рассказать о своих интересах, опыте, планах на будущее.
💻 Код-ревью. Сможете описать сделанное, дать обратную связь, тактично отстоять своё мнение.
Запишитесь на бесплатную консультацию. Кураторы определят ваш уровень языка и расскажут подробнее про обучение.
Реклама АНО ДПО "Образовательные технологии Яндекса", ИНН:7704282033, erid: LjN8JuH9p
Подробный разбор Observation
На WWDC Apple окончательно закопали Combine, и предложили при работе со SwiftUI использовать вместо него новый фреймворк Observation. В статье разбирается, чем же он лучше Combine, как с ним работать, и какие ограничения уже заметны.
Макросы в Swift
Хороший русскоязычный разбор того, как устроены макросы, как они запускаются, и что с их помощью можно автоматизировать.
Swift AST Explorer – инструмент для тех, кто хочет писать макросы
Если вы хотите научиться писать макросы, вам важно понимать, как выглядит AST вашего кода. Swift AST Explorer умеет парсить любой Swift код в AST и показывать разную статистику и метаинформацию.
swift-outdated – пакет для отображения устаревших зависимостей
swift-outdated при запуске проверяет, у каких из зависимостей проекта появились новые версии, и выводит табличку с ними. Если добавить его как билд фазу в проект, то устаревшие зависимости будут отображаться как ворнинги.
Пропуск тестов с XCTSkip
Если вы хотите, чтобы какие-то из ваших тестов временно не исполнялись, правильным подходом будет не переименовывать или комментировать их, а добавить вызов XCTSkip. А если вы хотите не выполнять тест только в каких-то условиях, например, в зависимости от типа устройства или версии OS, используйте XCTSkipIf
и XCTSkipUnless
.
Превью DocC в Xcode 15
В новой версии Xcode появилась возможность смотреть, как будет выглядеть сгенерированная с помощью DocC документация.
Дизайн-киты для macOS Sonoma
Apple выложили дизайн-киты для новой версии macOS: все UI компоненты, окна, алерты, поповеры, элементы интерфейса вроде дока и уведомлений, цвета и стили.
🔗Sketch
🔗Figma
visionOS SDK доступен для загрузки
Вы спите, а Apple выпускает релизы для вас! Стал доступен Xcode 15 beta 2, в который включены visionOS SDK, Reality Composer Pro, приложение для создания 3D контента для очков, и симулятор новой операционной системы. Вся документация по фреймворкам лежит тут.
Лог Q&A про SwiftUI
Одна из обязательных активностей на WWDC – Q&A с инженерами Apple. На ней можно получить комментарии по темам, которые не освещаются в документации. Пролистайте всю дискуссию про SwiftUI – можете найти себе что-то полезное.
Каталог макросов и полезных ресурсов
Если вы хотите вкатиться в макросы, начните с этого репозитория. Там собраны статьи, видео и примеры того, что можно сделать с их помощью. Например, power asserts, SFSymbol macros и AssociatedObject.
Управление и доступность в Vision Pro
Миша Рубанов подбил обзор принципов управления интерфейсом очков и того, как именно там реализованы разные виды accessibility – это просто космос.
Пример Scroll Transitions в новом SwiftUI
В SwiftUI появился новый очень простой способ реализовывать анимации при скроллинге таблицы – блок scrollTransition
.
Как реализованы расширения для Raycast
Raycast – это такой Spotlight на стероидах. Одна из основных отличающих его фичей – богатый каталог расширений от коммьюнити.
В статье рассказывается, как команда проектировала и реализовывала поддержку расширений для нативного приложения, какие варианты попробовала, и на какие компромиссы в итоге пошла.
Серия статей про CloudKit
Очень подробный цикл про все аспекты работы с CloudKit – начиная от общих концепций, заканчивая обработкой сложных кейсов изменений стейта.
Trailing label TextField в SwiftUI
Бывают кейсы, когда в TextField вам надо отображать не только введенный пользователем текст, но и какой-то суффикс. Например, автоматически добавлять домен почтового ящика при вводе логина. В короткой статье разбирается несколько трюков, которые помогут сверстать такую вьюху.
SwiftUI Index
SwiftUI Index – сервис, который трекает добавление новых API, вьюх и модификаторов в каждой версии SwiftUI.
Выпуск PointFree про тестирование асинхронного кода
Тестировать асинхронный код встроенными средствами Swift и Xcode – сложно. В новом выпуске PointFree разбираются с костылями, нужными, чтобы протестировать код, в котором есть несколько отдельных асинхронных шагов.
String Catalog в Xcode 15
В Xcode 15 появился новый способ управления локализованными строчками – String Catalog. При сборке проекта Xcode собирает все локализованные строки в одну таблицу, из которой вы можете редактировать ключи, значения и комментарии к ним.
Таблицы можно переводить на другие языки, при этом Xcode превращается в таск-менеджер на минималках: отображает общий прогресс перевода, дает возможность выставлять статус перевода у каждой из строк.
Здесь же можно настраивать плюрализацию и даже разное значение строк в зависимости от девайса, на котором запускается приложение.
Как MVC менялся со временем
Первое описание архитектуры MVC появилось еще в 1979 году. В коротком документе на 500 слов были сформулированы основные идеи:
- Model сообщает View о происходящих изменениях.
- View может не только получать сообщения об изменениях, но и проактивно запрашивать стейт, и даже самостоятельно менять модель. Но при этом ничего не знает о пользовательских ивентах.
- Controller обрабатывает пользовательские ивенты, меняет модель и вьюшку при необходимости.
В статье сравнивается два направления развития идей оригинального MVC – хорошо известный нам Apple-Style MVC и Model-2, популяризированный Ruby on Rails.
Inspector – новый тип модального представления в SwiftUI
В SwiftUI появился новый модификатор – inspector(isPresented:content:)
. На macOS и iPadOS он добавляет колонку настраиваемой ширины с правой стороны экрана. На айфоне показывает Bottom Sheet.
Анимация отрываемого стикера из iMessage
Выбор стикера для отправки в iMessage сопровождается анимацией, которая повторяет реальный эффект от отрывания стикера. Наш подписчик поделился статьей с реализацией такого эффекта, включая добавление теней и блеска.
Код на GitHub
Подробный разбор основных изменений в SwiftUI
💅Улучшения ScrollView: постраничная анимация, возможность начинать скролл с нижней границы вьюшки, кастомные транзишны при скролле.
💅Анимации и рисование: добавление Metal шейдеров, комплишн блоки для анимаций, функции для комбинирования форм.
💅Интеграция с внутренними покупками, сериализация Color, повторение действия кнопки при долгом нажатии и многое другое.
Swift OpenAPI package
Вышла альфа версия официального пакета от Apple для генерации сервера и клиента по спеке OpenAPI. Swift на сервере – это не очень интересно, а вот клиент – другое дело.
По спеке генерируются APIProtocol
, который содержит в себе все методы API, и Client
, структура, которая реализует сгенерированный протокол. Работает все это как поверх URLSession, так и поверх любого другого транспорта.
Лучшие сессии WWDC
Чтобы вам не пришлось смотреть много десятков сессий, Apple собрали самые важные из них на одной странице. Самая крупная категория, конечно, Spatial Computing.
Найдите работу своей мечты в крутой команде!
В Авито есть множество открытых вакансии для талантливых разработчиков разных уровней и направлений.
Достаточно один раз подписаться на Avito Career — и вы не пропустите новые вакансии 😎
Реклама. Рекламодатель ООО “КЕХ еКоммерц". 2VtzqvZdowR
The Composable Architecture в Swift 5.9
Посмотрите на пруф-ов-концепт того, насколько сильно сократится код фичей, написанных по TCA, благодаря макросам и Observability Framework.
Introspect – библиотека для доступа к внутренним вьюхам SwiftUI
Introspect позволяет обращаться к внутренним UIKit элементам, находящимся под капотом у большинства компонентов SwiftUI. Это нужно, чтобы изменять свойства, которые не видны из SwiftUI напрямую. Например, убрать сепараторы в таблице, или добавить RefreshControl к ScrollView.
Библиотеку безопасно использовать в проде, так как она не обращается к приватным API.
Официальный дизайн-кит в Figma от Apple
Начиная с 2017 года, в дизайн-команде Apple крутилась идея опубликовать официальный дизайн-кит в Figma. Спустя пять лет, он наконец появился!
- Куча компонентов, от алертов и уведомлений до навигации
- Шаблоны виджетов
- Макеты поддерживают Dynamic Type
- Встроенные стандартные настройки цветов, стилей и материалов
Дизайн-кит будет постоянно дополняться. Скоро там появится поддержка iOS 17, и компоненты из macOS, tvOS, watchOS и visionOS.