Стандартные уведомления через NotificationCenter не учитывают модель конкурентности и изоляцию акторов.
.main, компилятор может выдавать предупреждения при вызове методов, атрибутированных @MainActor.notification.object as? Type, что небезопасно и не даёт строгой типизации.Использование новых протоколов
MainActorMessage и AsyncMessage, доступных с iOS 26+, которые обеспечивают безопасную передачу уведомлений в модели Swift Concurrency решает эту проблемуMainActorMessage: уведомление чётко связано с главным актором — наблюдатель вызывается на главном акторе.AsyncMessage: уведомление может быть опубликовано из любого изоляционного контекста (любой актор или не-актор), и наблюдатель получает его асинхронно.Пример:
// ✅ 1. Определение уведомления:
struct RecentBuildsChangedMessage: NotificationCenter.AsyncMessage {
typealias Subject = [RecentBuild]
let recentBuilds: Subject
}
// ✅ 2. Отправка сообщения
let message = RecentBuildsChangedMessage(recentBuilds: builds)
NotificationCenter.default.post(message)
// ✅ 3. Подписка на сообщения
token = NotificationCenter.default.addObserver(of: [RecentBuild].self, for: .recentBuildsChanged) { message in
self.handleNewRecentBuilds(message.recentBuilds)
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
HealthKit очень мощный фреймворк, который был не популярен среди разработчиков из-за ограниченности аудитории. Раньше приложением здоровья на iPhone можно было пользоваться очень ограниченно и пользы в интеграции с ним было мало. Все поменялось с выпуском iOS 26 и новых API. Теперь возможно реализовать полнофункциональное приложение для отслеживания тренировок на iPhone/iPad.
С iOS 26 теперь у нас есть:
HKWorkoutSession) на iPhone/iPad.Давайте разбираться!
HKWorkoutConfiguration, HKWorkoutSession, HKLiveWorkoutBuilder, HKLiveWorkoutDataSourceПример полной интеграции с API и создания интерфейса при помощи SwiftUI есть в статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
В рамках программы Google Summer of Code 2025 для проекта SourceKit-LSP реализовано значительное улучшение автодополнения и подсказок в IDE-средах, поддерживающих Swift.
Почему это важно для нас?
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍8❤2🔥2 1
Демонстрация: Как интегрировать новый язык дизайна в приложения
Вчера прошла "встреча с Apple" ключевой темой которой являлся новый дизайн и жидкое стекло. Мои хайлайты из 2-часового доклада:
🔵 Жидкое стекло становится частью фундаментальной системы дизайна Apple.
🔵 Интерактивность жидкого стекла представляет собой огромный скачок в программных и графических технологиях.
🔵 Акцент на содержании приложений и улучшение иерархии пользовательского интерфейса.
🔵 Пользовательский интерфейс должен быть легко доступен и элегантно отходить на второй план.
🔵 Три урока, усвоенные при перестройке приложения с помощью SwiftUI: начните с малого, работайте умнее, а не усерднее, завоевывайте доверие.
🔵 Требуется дизайн система, где дизайн и код работают в гармонии.
🔵 Переписывание приложения на SwiftUI облегчает переход на Liquid glass
🔵 Liquid Glass помогает интерфейсу отойти на второй план, позволяя контенту сиять.
Опыт команды дизайнеров Apple:
🟢 Цель проекта — создать единый язык дизайна для всех продуктов Apple.
🟢 Мотивация: улучшение эргономичности и удобства использования.
🟢 Десятки эскизов и прототипов помогают находить лучшие решения.
🟢 Преимущества имеют нативные компоненты для создания интерфейсов
🟢 Liquid Glass уменьшает количество цветов в кнопках, позволяя контенту быть хорошо видимым
🟢 Поиск перемещён с верхней части iPhone на нижнюю для большей доступности.
🟢 Сворачивание панели вкладок позволяет сфокусироваться на контенте.
🟢 Иконки приложений формируют первое впечатление о приложении.
🟢 Жидкое стекло создаёт единый визуальный язык для иконок.
Вчера прошла "встреча с Apple" ключевой темой которой являлся новый дизайн и жидкое стекло. Мои хайлайты из 2-часового доклада:
Опыт команды дизайнеров Apple:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍2
В версии Swift 6.3 идут значительные улучшения для Embedded Swift — версия Swift, оптимизированная под крайне ограниченные среды
Ключевые обновления:
denoscription/debugDenoscription для Float, Double теперь доступен в библиотеке Embedded SwiftEmbeddedRestrictions), которые помогают выявлять конструкции языка, неподходящие для Embedded-режима (например, untyped throws, применение generic-функций к existential)@c, улучшена терпимость к несоответствиям между C-подписью и Swift-объявлением@exportДаже если вы разрабатываете исключительно под iOS, полезно знать о развитии языка: улучшенная C-совместимость, диагностика, отладка — всё это может пригодиться. Swift 6.3 продолжает расширять возможности встроенного (embedded) варианта языка — теперь он становится не просто экспериментом, а более полноценной средой для разработки лёгких и эффективных решений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Зумирование контента — привычное действие для пользователей. С помощью
MagnifyGesture с iOS 17 в SwiftUI можно легко добавить такой жест к View:Вариант 1: Временный зум
@GestureState для хранения текущего коэффициента масштабирования:.scaleEffect(magnification) к View и добавьте жест@GestureState private var magnification: CGFloat = 1
.gesture(
MagnifyGesture()
.updating($magnification) { value, state, _ in
state = value.magnification
}
)
Вариант 2: Сохраняемый зум
.scaleEffect(totalMagnification * currentMagnification) и жест@State private var totalMagnification: CGFloat = 1.0
@State private var currentMagnification: CGFloat = 1.0
.gesture(
MagnifyGesture()
.onChanged { value in
currentMagnification = value.magnification
}
.onEnded { value in
totalMagnification *= value.magnification
currentMagnification = 1.0
}
)
Что важно:
Добавление зума через MagnifyGesture в SwiftUI — мощный инструмент для повышения интерактивности интерфейса. Главное — выбрать правильную стратегию и грамотно реализовать состояние.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Использование
GeometryReader для управления layout-разметкой может усложнить и сделать более тяжелой иерархию View. Часто, чтобы центрировать контент или задать максимальную ширину (например, для iPad), разработчики оборачивают всё в GeometryReader, вычисляют размеры — но это влияет на layout, вызывает лишние пересчёты, усложняет структуру. Правильным решением в этом кейсе является использование onGeometryChange + contentMargins (iOS 17+ с бекпортом до iOS 16)onGeometryChange даёт возможность реагировать на изменение геометрии контейнера — без необходимости оборачивать интерфейс в GeometryReadercontentMargins можно задавать отступы для scroll-контента, центрировать и ограничивать ширину — делая layout адаптивным и чистымПрактические плюсы для iOS разработчика:
Что стоит проверить прямо сейчас:
GeometryReader просто ради вычисления ширины/центрирования. Возможно, его можно заменить на onGeometryChange + contentMarginscontentMargins + ограничение max-width, чтобы красиво центрировать контент на широких экранахonGeometryChange позволяет элегантно отлавливать это и обновлять layout без лишней обёрткиPlease open Telegram to view this post
VIEW IN TELEGRAM
👍2
Вышел обновленный стендфорский курс CS193p. Это бесплатный курс посвященный разработке приложений для iOS, объясняет основы создания приложений для iPhone и iPad с помощью SwiftUI. Почему культовый? В 2012 году я сам по нему учился и всю свою карьеру встречаю множество талантлевых iOS разработчиков, которые так же начали карьеру с него. На сайте представлены материалы, которые были доступны студентам Стэнфорда - записи домашних заданий и демонстрационный код.
Пока вышли первые 6 лекций, но скоро должны появиться еще 9-10 лекций. Появилась идея сделать обзор лекций в канале @ios_broadcast, если вам такой формат интересен, ставьте 🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥42❤9
Привет, хочу поделиться классным каналом, который и сам читаю, про iOS разработку и мобильную разработку в целом.
Ребята делятся только полезными гайдами, важными статьями, примерами кода, новостями и многим другим.
👉 Подписывайтесь на @hardworkerIT
Ребята делятся только полезными гайдами, важными статьями, примерами кода, новостями и многим другим.
👉 Подписывайтесь на @hardworkerIT
❤8👍4🤔2⚡1
Обычная вводная лекция, о курсе, требования для прохождения курса и знакомство со всем необходимым набором возможностей Xcode. Самая интересная часть 1 лекции это домашнее задание, до 4 лекции от студентов Stanford требуется изучить основы Swift:
Цветовая кодировка разделов
Материалы к прочтению:
Мои хайлдайты из плана для чтения:
Разобраться в разнице между
let и varПолучил достаточно много 🔥в реакциях, так что введу разбор одной лекции в неделю. Тем кто хочет погрузиться в iOS разработку-предлагаю за эту неделю смотреть саму лекцию и задавать вопросы по домашнему заданию прямо в комментарии к посту.
#cs193p
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍7❤1