iOS Roadmap - Полезное | Swift, SwiftUI, Интервью
444 subscribers
107 photos
3 videos
8 files
195 links
iOS Roadmap: Swift, SwiftUI, архитектуры, интервью. Еженедельные подборки статей и видео, плейбуки, чек-листы, решения задач с пояснениями. Полезно начинающим и практикующим iOS-разработчикам.
Download Telegram
Forwarded from iOS Roadmap - Новости, анонсы и все события
PvP Дуэли в мини приложении

Привет, в приложении уже доступен для пользования функционал дуэлей. Он работает асинхронно, и вот как это устроенно:
Создаёшь дуэль - нажимаешь на кнопку "Быстрый матч"
Отвечаешь на 8 вопросов - это микс тем, сложность по нарастающей: лёгкие -> средние -> сложные -> последний средний
• Ждёшь когда ответит соперник, так же 8 вопросов

После того как ты и твой соперник прошли дуэль, вы получаете результаты. Эти результаты будут отмечаться в статистике в шапке экрана дуэлей и в футере как прошедший матч.

Кто побеждает? 🤔
1. Больше правильных ответов -> победа
2. Одинаковый счёт? Побеждает тот, кто быстрее отвечал на правильные вопросы: время на ошибки не считается - нельзя наугад тыкать быстро
3. Разница во времени ≤ 3 секунды? Ничья

Новый функционал позволит тебе ещё качественне и с интересом подойти к вопросу подготовки к собеседованию.

Даже если ты не готовишься к собеседованию, узнать кто же лучше знает вопрос и iOS разработку.

Если остались вопросы или предложения, можно отписать в комментарии или в лс, встретимся на дуэли! 🎮

Ссылка на мини приложение
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍21
AI решение для текущего рынка

Репозиторий career-ops насчитывает 13.4K звёзд и помогает с поисками работы.

Ты кидаешь ссылку на вакансию. Система сама парсит описание, сравнивает с твоим CV, оценивает совпадение по 10 параметрам, генерит PDF-резюме, заточенное именно под эту позицию.

Я насчитал 14 режимов:
• Оценка вакансии
• Генерация CV
• Сканирование порталов
• Батч-обработка десятка вакансий параллельно
• Подготовка к интервью
• Скрипты переговоров по зарплате
• LinkedIn

Советую изучить гитхаб и поспрашивать свою LLM как можно на твоём рынке и для тебя найти применение 🙏
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥41
Сегодня Apple отвечает на твои вопросы по Swift Concurrency

Возможно ты вспомнишь, как вечерами сидел и немного злился при миграции на Swift 6? А может-быть тебе не достаточно понятно:"Как же устроен async / await под капотом?"

Всё это и много другое можно будет сегодня спросить у разработчиков из Apple, напрямую! Да-да, не удивляйся...

Формат простой:
Задавать вопрос здесь
Отвечать будут здесь

Я бы посоветовал заранее подумать, до эфира, что хочется спросить и, возможно, подготовить код. Тогда ты сможешь одним из первых закинуть в Q&A секцию и не ждать очередь / пропустить.

Сегодня, в 20:00 по МСК


https://www.youtube.com/live/E95agtPgaa0
👍21🔥1
Swift Concurrency + Task.immediate

Представь, что ты на @MainActor и тебе надо вызвать async функцию:


@MainActor
func didTapButton() {
Task {
await viewModel.update()
}
print("после Task")
}


Угадай, что вызовется первым?
• update
• print

Спойлер: print

Task - это "давай положим в очередь. А выполним, когда executor освободится".

И возможно тебе требовалось:
1. Выполнить быструю задачу, которая заканчивается без реального suspend
2. Ловишь легаси колбэки, но точно знаешь, что он на main
3. Нужен порядок: сначала обновить state, потом продолжить синхронный код

И вот, в Swift 6.2 завезли Task.immediate

Как понятно из названия, в Task.immediate стартует тело задачи синхронно, на текущем executor'е и без enqueue. Гонит код до первой реальной suspension и только там отдаёт управление обратно на calling executor.


@MainActor
func didTapButton() {
Task.immediate {
await viewModel.update()
}

print("после Task.immediate")
}


Если update() успеет обновить state до того, как реально приостановится - обновление произойдёт до print.

Всё это, плюс await != suspension, как часто сгодится и др. разобрано глубже в пропозале:
https://github.com/swiftlang/swift-evolution/blob/main/proposals/0472-task-start-synchronously-on-caller-context.md

Или есть небольшое саммари:
https://www.avanderlee.com/concurrency/immediate-tasks-in-swift-concurrency-explained/

В ноушене будет скоро 👍️️️️️️
4👍2🔥2
Крупный редизайн для mini app

Привет! В мини-приложении не так давно появился режим дуэлей.

Если коротко - соревнуешься с реальным человеком на одинаковых вопросах: кто сильнее в iOS. Вопросы случайные, но обоим даются те же. Побеждает тот, у кого больше правильных ответов; при равном счёте решает суммарное время.


Рандомные вопросы одинаковы для обоих, побеждает тот, кто ответил правильнее. А в случае ничьи решает время.


Изучаю AI на практике, поэтому редизайн делал вместе с Claude Design, через агентов в Claude Code. Кто помнит, какой дизайн был раньше - оцените разницу.

Перепаковано всё: от баннера на вкладке "Интервью" до экранов ожидания, самой сессии и финальных результатов.

Если ты не пробовал, то самое время. Можно договориться с другом и сыграть один на один, или принять открытый вызов от любого игрока. Игра асинхронная, возвращайся к ней когда удобно.

Если есть идеи, пожелания, нашел баг - смело пиши @somestay07
5👍2🔥2
Таблица менторов

Привет, обновил таблицу менторов:
• Рома в данный момент не менторит, скрыл
• От Алексея получил вчера отзыв про вкат, можешь прочитать подробнее

Если ты искал ментора или пока-что раздумываешь, но прикидывал - таблица менторов актуальна.

Есть отзыв на ментора? Вопрос? Предложение? Пиши в личные сообщения и обсудим.


Таблица коммерческая только для ребят. Я же не беру никакой платы / доплаты. Сугубо свожу менти <-> ментора, чтобы каждый получил то, что хотел и остался доволен.
👍6👎32😁1
WWDC 2026

До презентации осталось меньше месяца: пройдёт c 8 по 12 июня. Ожидается iOS, MacOS и т.д. 27 версии. Этот год должен запомниться качеством вместо количества:

Apple намерена в 2026 году сместить акцент с внедрения масштабных новых функций в iOS 27 на стабильность и внутреннюю оптимизацию в предстоящем крупном обновлении.


Siri переезжает на Gemini. В январе этого года Apple и Google официально подписали многолетний контракт: следующее поколение Apple Foundation Models построят на Google Gemini. Светящийся "26" в логотипе WWDC - это, по Гурману, и есть будущий курсор Siri в Dynamic Island. В iOS 27 предустановят отдельное приложение Siri с историей разговоров и поиском по чатам - по формату как ChatGPT.

Core ML уходит, Core AI приходит. По репорту Гурмана, Apple покажет на WWDC новый фреймворк Core AI, который заменит Core ML образца 2017 года. Логика проста: "machine learning" как термин устарел, индустрия давно про LLM и генеративные модели. Core AI задумывают как современную точку входа для интеграции AI-моделей в приложения: и on-device через Neural Engine, и cloud через Apple Foundation Models, теперь натренированные на Gemini. Core ML-приложения продолжат работать, но новый дефолт - Core AI.

Новый инструмент адаптации приложений под iPhone Fold. В сентябре выходит iPhone Fold, тот самый раскладной, и Apple даст разработчикам инструменты адаптации приложений. В разложенном состоянии iPhone будет иметь интерфейс, похожий на iPad, с поддержкой многозадачности: два приложения смогут работать одновременно.
🔥76👍3👎1
Apple Design Awards 2026

Apple назвала 36 финалистов дизайн-премии года. Победителей объявят на WWDC 8-12 июня. Ниже будет нескольо приложений, можно взять за пример некоторые момент, авось получится стать следующим финалистом? 🔥

Guitar Wiz - соло дев из Индии написал его полностью на SwiftUI. VoiceOver проговаривает каждую струну и аккорд. Dynamic Type, Increased Contrast, Differentiate Without Color - всё из коробки. Если хочешь понять как делать accessibility правильно - вот твой референс.

Hearing Buddy - девушка с потерей слуха сделала субтитры в реальном времени. Использует Foundation Models для on-device распознавания речи. Кто забыл - это тот самый фреймворк который Apple представила в iOS 26.

Structured - планер дня, на SwiftUI. Автор встроил Foundation Models для автозаполнения задач: к примеру, ты пишешь "зубной" и он предлагает "запись к стоматологу, среда 10:00".

Detail: AI Video Editor - превращает текстовый план в сценарий телесуфлёра и сам монтирует multi-angle. Тут тоже используется Foundation Models.

Apple любит, когда используешь их новинки. Возможно стоит рассмотреть новинки этого WWDC, если хочется, чтобы твоё приложение зафичерили в сторе?

👉 Все финалисты: https://developer.apple.com/design/awards/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥2
Новые вопросы для @ios_roadmap_academy_2024_bot

Категория:"Тестирование"


• Swift Testing: параметризованные тесты через @Test(arguments:)
• Тестирование actor и @MainActor кода без deadlock в XCTest
• Memory leak detection в тестах: addTeardownBlock и weak self
• UserRepository на Core Data и SwiftData: тестирование persistence без диска
• ImageProcessor: отлов регрессий производительности в CI через XCTest
• Тестирование AsyncSequence и AsyncStream: ожидание событий и завершения
• AuthService: изоляция Keychain, UserDefaults и FileManager в unit-тестах
• SwiftUI LoginView: поведение и visual regression в одном тест файле
• Xcode Test Plans: разный запуск unit, integration и UI в СI
• PaymentService: выбор test double для каждой зависимости

Категория:"SwiftUI: Основы"


• Охват анимации в SwiftUI: withAnimation vs .animation(_:value:)
• Coordinate spaces в GeometryProxy и поведение GeometryReader
• Dependency tracking в SwiftUI body: триггеры перерендера и run loop колизии
• Модальная презентация в SwiftUI: .sheet, .fullScreenCover и DismissAction
• Coordinator в UIViewRepresentable: makeUIView, updateUIView, makeCoordinator и bridge между мирами
• Safe area в SwiftUI: safeAreaInsets, ignoresSafeArea и frame в layout pass
• Lazy-контейнеры SwiftUI: построение по требованию и точка срабатывания onAppear
• AnyView и type erasure: потеря structural identity и последствия для SwiftUI diffing
@ViewBuilder внутри: TupleView, _ConditionalContent и предел в 10 потомков

Категория:"Swift: Основы"


• Различие some и any в Swift 5.7+: opaque types vs existential containers
• Семантика inout: copy-in/copy-out и запрет захвата в @escaping closure
• Семантика @autoclosure: ленивая оценка, nil coalescing и assert
• Контракт @propertyWrapper: wrappedValue, projectedValue и dollar-prefix accessor
• Custom CodingKeys и nested container для flat-структуры из nested JSON
• String.Index, .count и Character vs Unicode.Scalar в Swift
• ArraySlice: сохранение индексов исходного Array и copy-on-write
• Автоматический synthesis Hashable и Equatable: struct, enum, class
• Иерархия KeyPath в Swift: KeyPath, WritableKeyPath, ReferenceWritableKeyPath, PartialKeyPath
• Result<Success, Failure>: map, mapError, flatMap и get() в Swift
• Ключевое слово mutating: struct, enum, class и protocol требования
• Семантика равенства AnyHashable: type identity и .base
• Tuple и protocol conformance в Swift
• Primary associated types: что добавил Swift 5.7
• Варианты try / try? / try! и контракт rethrows
• Дженерики: where-clause и same-type constraints
• Access control: private vs fileprivate vs private(set)
• Приведение типов: as? / as! / is, protocol-existential и type(of:)
• Custom Sequence: self-as-iterator и ленивые последовательности

Категория:"UIKit: Основы"


• Цикл layout в UIView: setNeedsLayout, layoutIfNeeded и layoutSubviews
• Off-screen rendering: триггеры и стоимость GPU pass
• Цикл отрисовки UIView: setNeedsDisplay() и draw(_:)
• Алгоритм hitTest(_:with:): обход subviews и условия возврата nil
• Auto Layout self-sizing: intrinsicContentSize, invalidate и systemLayoutSizeFitting
• UIScrollView: contentInset vs adjustedContentInset и автоматическое смещение contentOffset
• Идентичность через Hashable и режимы apply в NSDiffableDataSourceSnapshot
• Анализ различий UIGestureRecognizer: shouldRecognizeSimultaneouslyWith vs require(toFail:)
• Прерывание UIViewPropertyAnimator: fractionComplete и isReversed во время interactive transitions
• Порядок жизненных методов при push и модальной презентации

Эти вопросы доступны как для категории на экране "Интервью", так же будут попадаться и для дэлей.
👍5🔥41
UI обновление для mini app

Привет, в приложении уже доступен новый UI. Теперь легко и удобно отслеживать достижения, ключевые метрики и прогресс по ответам на вопросы.

Суть обновления в том, чтобы наконец-то унифицировать этот экран. Он будет и дальше докручиваться, доделываться, но теперь уже с айдентикой и понятным UI.

Если есть вопросы, предложения по Mini App - всегда можно отписать в лс. А сам Mini App доступен здесь: @ios_roadmap_academy_2024_bot
5🔥4👍2