SwiftyGroup


Гео и язык канала: Россия, Русский
Категория: Технологии


Собираю единомышленников для совместного изучения Swift, подготовки к собеседованиям и прокачивания скилов:)
Чат группы:
https://t.me/swiftygroup
@swiftygroup
Все самое интересное:
https://boosty.to/buik
Админ:
@VladimirBuik

Связанные каналы  |  Похожие каналы

Гео и язык канала
Россия, Русский
Категория
Технологии
Статистика
Фильтр публикаций


SwiftUI .task: как не словить гонку при загрузке данных

.task(id:) хорош для экрана, где загрузка зависит от параметра. Главное: не забыть, что старый task отменяется при смене id.

Типичный пример: экран профиля получает userID, грузит данные и должен перезапускать запрос при смене пользователя. Для этого не нужен ручной onAppear плюс отдельный флаг загрузки.

struct ProfileView: View {
let userID: User.ID
@State private var profile: Profile?
@State private var error: Error?

var body: some View {
Content(profile: profile, error: error)
.task(id: userID) {
do {
profile = try await api.profile(for: userID)
error = nil
} catch is CancellationError {
// Новый userID уже запустил следующий task.
} catch {
self.error = error
}
}
}
}

При смене userID SwiftUI отменит старую задачу и начнет новую. Это удобно для search, detail screens и preview states, где значение id описывает загрузку.

Ограничение: ваш async-код должен уважать cancellation. Если внутри обёртка над старым callback API, добавьте отмену сами или хотя бы проверяйте Task.isCancelled перед записью в state.

Источник: Apple Documentation, View.task

#Swift #SwiftUI #Concurrency #iOS #AsyncAwait


⚡️⚡️AI-агент съел токены и потерял контекст. Что делать? Разберемся на Mobius 2026 Autumn.

Когда AI становится частью рабочего процесса, появляются вполне инженерные вопросы: сколько токенов уходит на задачу, где агент теряет контекст, оправдан ли MCP, как поделиться рабочими практиками внутри команды и где автоматизация начинает создавать больше проблем, чем решает.

Этим вопросам посвятят отдельный блок на Mobius 2026 Autumn — конференции по мобильной разработке. Восемь докладов, где AI-разработку рассмотрят с разных сторон: от оптимизации агентов и оркестрации до юридических ограничений и локальных моделей.

Подробности — в карточках и на сайте.

Конференция пройдет 21–22 октября в Санкт-Петербурге + онлайн.


Всем привет😎.

Уже прилетел отказ от Apple: «Приложение падает при запуске».

Начал проверять — у меня всё работает, ничего не падает. Запустил на iPad(я пишу только под iPhone)— и вот вам вылет прямо на старте 😕

Причина — UIScene. В логах: для приложения, собранного с этим SDK, требуется UIScene lifecycle.

Сам же предупреждал про UIScene, сам же на этом и попался. 😱


Репост из: Код Воробья для iOS разработчиков
Доигрались, вайбкодеры? Apple из-за вас меняет файл проекта

.pbxproj ➡️ .xcproj

📁 Раньше проект хранился в property-list, а теперь в JSON

Агентам будет проще править файл, меньше конфилктов, нормально видны изменения


Репост из: iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT
iPhone Duo Design Guidelines

Подъехали подробные гайдлайны по тому, как надо адаптировать свои приложения для работы с новой раскладушкой. Давайте, не ленимся поддерживать, я планирую покупать!


Xcode 27 RC уже вышел, и приложения, собранные в нём, уже можно отправлять на проверку в App Store.

Если ваше приложение всё ещё использует старый жизненный цикл через UIApplicationDelegate, без UIScene, самое время мигрировать. Приложения, собранные с iOS 27 SDK, не будут запускаться без поддержки сцен.

Кстати, UIScreen.main тоже теперь deprecated.
Инструкция Apple по переходу на UIScene


Репост из: iOS Makes Me Hate
Видео недоступно для предпросмотра
Смотреть в Telegram


Собеседование: почему actor не гарантирует порядок ответов в UI?

Вопрос ловит тех, кто запомнил actors как защиту от гонок, но не отделяет data race от логической гонки.
Сильный ответ: actor сериализует доступ к своему изолированному состоянию. Но каждый await это точка приостановки, после нее другая задача может зайти в actor и изменить состояние. Data race не будет, зато устаревший ответ может приехать позже нового.

Мини-пример:

actor ImageLoader {
private var cache: [URL: Data] = [:]

func data(for url: URL) async throws -> Data {
if let cached = cache[url] { return cached }

let (data, _) = try await URLSession.shared.data(from: url)
cache[url] = data
return data
}
}

Код безопасен по памяти: словарь не мутируется из двух потоков одновременно. Но если экран запросил картинку A, потом B, ответ A может завершиться позже и перерисовать UI старым состоянием, если caller не проверяет актуальный id.

На интервью хороший вывод звучит так: actor решает проблему изоляции данных, но порядок пользовательских намерений надо моделировать отдельно. Для SwiftUI это часто .task(id:), сравнение requestID перед присваиванием или cancellation старой задачи.

Источник: The Swift Programming Language, Concurrency

#Swift #Concurrency #Interview #iOS #Actors



1k 0 25 2 15

Xcode 27 стал Apple silicon only

Если в команде остались Intel Mac, Xcode 27 на них уже не запустится.


Apple обновила ежедневный сценарий работы в Xcode 27. Проекты должны открываться быстрее, настройки синхронизируются через iCloud, панель инструментов можно полностью перестраивать, а темы меняют оформление всего приложения.

Самое заметное ограничение: Xcode 27 поддерживает только Mac с Apple silicon. Ещё одно крупное изменение, Device Hub объединяет симуляторы и физические устройства в одном окне.

Практический вывод: до обновления CI и рабочих машин проверьте архитектуру всех Mac, доступность нужных runtime и привычные сценарии управления Simulator. Бета подходит для отдельной ветки и тестового окружения, рабочую сборочную цепочку лучше не переносить вслепую.

Источник: Apple Developer, Platforms State of the Union

#iOS #Xcode #WWDC26 #AppleDeveloper


Interview: чем опасна actor reentrancy в Swift Concurrency?

Сильный ответ: actor защищает mutable state от одновременного доступа, но после await другой вызов может зайти в тот же actor и изменить состояние.


Вопрос на собеседовании обычно звучит просто: “Actor делает код thread-safe?” Ожидаемый ответ: да, но не магически для всей бизнес-логики. Actor serializes access к своему isolated state, однако Swift actors are reentrant: на suspension point actor может выполнить другую работу.

Мини-ловушка:

actor Counter {
private var value = 0

func incrementSlowly() async {
let oldValue = value
await Task.yield()
value = oldValue + 1
}
}


Если два клиента одновременно вызовут incrementSlowly(), оба могут прочитать 0 до await, а затем оба записать 1. Actor не нарушен, data race нет, но логическая инварианта потеряна.

Как отвечать сильнее: не держите важный read-modify-write через await. Сначала дождитесь внешней async-работы, потом зайдите в actor и обновите state; либо перечитайте state после suspension; либо разделите метод так, чтобы инвариант обновлялся без suspension point.

Источник: The Swift Programming Language / Concurrency

#Swift #Concurrency #Interview #Actors #iOS


Swift_Networking_Mobile_Same_Style.pdf
251.8Кб
Работа с сетью
#mobile


Что выведется в консоль?
Опрос
  •   short walk
  •   long walk
  •   Ошибка компиляции
  •   Ошибка во время выполнения
345 голосов


#квиз


Скомпилируется ли данный код? Если да, то какое значение будет у константы example2?
Опрос
  •   SwiftyGroup
  •   ""
  •   Этот код скомпилируется, но будет сбой программы
  •   Этот код не скомпилируется
355 голосов


#квиз


Swift_Map_FlatMap_CompactMap_Mobile_Same_Style.pdf
197.9Кб
Разница между Map, FlatMap и CompactMap в Swift.
#mobile


Всем привет!😊

Нашёл интересную статью о том, как в SwiftUI с помощью .fixedSize решить задачу с карточками разной высоты.

Автор показывает кейс: в горизонтальном ScrollView нужно сделать все карточки высотой как самая высокая. Обычный .frame(maxHeight: .infinity) растягивает их на весь экран, а связка .fixedSize для HStack и .frame(maxHeight: .infinity) для карточек даёт нужный результат.

Главная мысль: не стоит игнорировать «странные» модификаторы SwiftUI — иногда именно они решают задачу одной строкой.

Мой перевод:
https://telegra.ph/Nakonec-to-ya-nashyol-kejs-dlya-fixedSize-05-14


Swift_Error_Handling.pdf
250.0Кб
Способы обработка ошибок в Swift
#mobile


Изучаете программирование? Хотите стать классным айтишником с высокой ЗП?

Пока многие паникуют из-за бума ИИ, вы можете стремительно войти в сферу IT при помощи сборки 'https://t.me/addlist/25SfEOJw5gY2YmYy' rel='nofollow'>"IT в деле" которую мы составили. Специально для вас разбили нашу сборку мини папки по конкретным тематикам:)

Что внутри сборки:

- Каналы о программировании и разработке: Python, CSS, HTML, Java и Swift

- GameDev и каналы о QA тестироварии, создание игр, помощь для ваших проектов и реальный опыт от тестировщиков 💍

- Авторские каналы и вайбкодинг: IT & AI, простые заметки с проектов, работа с нейросетями, и как они реально влияют на индустрию 🔤

- Информационная безопасность: многое узнаете о работе хакеров и о том, как защитить себя в этом интернет-хаосе. 🔫

Для каждого здесь что-то найдётся! 'https://t.me/addlist/25SfEOJw5gY2YmYy' rel='nofollow'>Выберите интересные вам каналы или подпишитесь на всю сборку, и найдите то, что нужно вам для следующего шага в IT.

Показано 20 последних публикаций.