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

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

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

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

Если не хочется смотреть видео по WWDC, но хочется тезисно понять:
• Что сделали
• Где сделали
• Описание

И т.д. то вот WWDC Notes ведётся западным коммьюнити. На этом же сайте из а 2025 год есть и будет наполняться по мере выхода выпусков в этом году!
🔥32👍1
WWDC26 - Platforms State of the Union

В этом году удивляет! Мало того, что будет RAG и Температура, т.е работу с AI планируется серьзеная.

Так показали новый Xcode 27:
- Плагины место где можно будет накатить скиллы, агенты и тулзы. К примеру Гитхаб и Фигма будут уже доступны.

- Хаб для тестирования, прощай Rocket Sim? Где можно будет растянуть девайс, поменять цвета и тему и тд

- AI теперь будет сопровождать планом, как завещали лучшие LLM, ревью внутри Xcode с ароматами подпункто.

Так еще и Xcode AI теперь сможет взять и полностью протестировать: понажимать, подергать, перейти, а в конце выгрузить скриншоты и описание, что сделано!

Ну и наконец-то сломанное body в SwiftUI теперь покажет конкретное место, не прошло и 5 лет 😁🤝

Выглядит интересным 🤝
8🔥4👍2😁2
Property Wrapper @State теперь макрос

Только-что показали, что @State стала макросом и тем самым будет доступна с ios 17.

Исправили проблему, при которой @State могла вызвать конструктор сущности несколько раз.

В отличие от @StateObject с его autoclosure, у @State отсутствовало последнее и это было неоднозначно.

В ноушене про это писал, что будьте осторожны, несет за собой сайд эффект.

Теперь еще одну неприятность убрали, отлично!
🔥52👍1
ForEach из SwiftUI обзовется swipe actions

Наконец-то Apple добавили поведение свайпов: влево, вправо как у List, UICollection, UITableView, Table и для ForEach элементов, примате ленивые стеки!

Жаль это все доступно только с 27 версии. Как по мне изначально должно было быт, с 13 или хотя бы 15…
4🔥3😁2🤯1
Реинкорнация Stack Overflow

Возможно ты видел новость, что количество вопросов на Stack Overflow упало с 200к до 3862 в месяц.

Так вот, команда не сдаётся, она адаптируется. Будут делать свой сайт "API first" для агентов.

Как это работает? Цикл из четырёх шагов:
Сначала ищи. Независимо от того, планирует ли агент выполнение задачи, застрял ли он в процессе реализации или собирается выполнить действие, на которое модель не была обучена, он сначала запрашивает информацию в Stack Overflow for Agents, прежде чем тратить вычислительные ресурсы на повторный поиск уже известных решений. Если нужный ответ есть в корпусе, агент использует проверенный ответ и приступает к выполнению задачи.

Нет ответа - внеси свой. Решил проблему сам? Оформляет пост. Для этого skill файл просит сначала показать черновик человеку-оркестратору на ревью.

Проверяй чужое. Агенты и разработчики, которые пробуют решить ту же проблему после публикации, делятся информацией о том, что сработало, что пришлось изменить и при каких условиях это сработало. Именно проверка, а не создание ответов, помогает агентам заработать репутацию на Stack Overflow.

Сигналы объединяются в консенсус. Голоса, ответы и отзывы о проверке возвращаются к исходному сообщению и накапливаются вокруг него. Платформа создана для выявления консенсуса, а не единственного канонического ответа, поэтому пользователи видят, что уже было опробовано, и сами решают, что подходит именно им.

Сейчас есть Три типа постов

1. Question. Что пробовал, что не вышло, где остался затык.

2. Today I Learned. Что сломалось, что помогло, в чём корневая причина. Самый ценный тип: фиксирует ровно то, чего не было в обучении модели.

3. Blueprint. Переиспользуемый паттерн архитектуры. Планка качества максимальная: один кривой Blueprint уведёт в сторону всех, кто строит такое же.
👍5🔥42
Матрёшка из Task внутри ViewModel

Есть популярный паттерн, который выглядит знакомым многим SwiftUI разработчикам:


@MainActor
final class ArticleViewModel: ObservableObject {
@Published var isPublishing = false

func publish(_ article: Article) {
isPublishing = true

Task {
await ArticlePublisher.publish(article: article)
isPublishing = false
}
}
}


На первый взгляд вроде-бы всё нормально:
• ViewModel изолирована на MainActor
• UI состояние меняется безопасно
• async работа вынесена в Task

Но есть одно "но" и выглядит оно как Task. Кто-то сразу прикинул:"Ага, ну тут у нас просто Task, а не Task.detached и значит мы наследуем изоляцию и замыкание Task будет изолировано на MainActor!" И будет прав, достаточно типичный пример в SwiftUI разработке.

Проблема в том, что мы легко можем протащить через MainActor работу, которой этот актор вообще не нужен.

Например, ViewModel целиком помечена @MainActor, потому что хранит UI состояние и управляет навигацией, но не каждая операция внутри такой ViewModel обязана выполняться в этой изоляции.

Но как быть, если у нас ViewModel большая, скажем на 800-900 строк и одну из операций внутри неё необходимо реализовать вне текущего actor isolation? 🤔

В Swift 6.2 для такого случая есть явный инструмент - атрибут @concurrent.


Task { @concurrent in
await ArticlePublisher.publish(article: article)

await MainActor.run {
isPublishing = false
}
}


Что здесь происходит:
@concurrent говорит замыканию Task не наследовать текущую actor isolation
• Вызов публикации больше не стартует в MainActor изоляции ViewModel
MainActor.run используется только там, где реально нужно обновить UI состояние

То есть мы не таскаем всю операцию через главный актор просто потому, что вся ViewModel помечена @MainActor. И @concurrent нужен как раз для случаев, когда мы хотим явно сказать:

Эту async работу не нужно выполнять в текущей actor isolation

Тем самым ближе познакомились с достаточно частым кейсом, сейчас / в будущем, где нам может понадобиться новый атрибут! 😎️️️️️️

Вдохновился и видоизменил под +1 кейс от Unexpected Task suspension points in Swift Concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
👍65🔥5
#miniapp #обновление

Привет, в mini app обновление - расширил источник вакансий. Теперь есть небольшой количество вакансий из Linkedln, совсем немного 10-15шт удалось подтянуть.

Буду так же смотреть в увеличение вакансий из Linkedln + остальные источники.

Соверешнно бесплатно и уже доступно для каждого: @ios_roadmap_academy_2024_bot
🔥3👍2🤯1
Получай новые вакансии прямо в боте

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

Тем самым тебе от бота будет приходить каждые 2 часа при наличии новых. Если вакансий открылось несколько - будет одно смс с разделением.

При нажатии на вакансию ты по диплинку перейдешь на детальный экран. Там уже на сам сайт, либо написать заметку или добавить в избранное и т.д.

Новые вакансии - это новые в БД мини App. Так как источников несколько.

• Бесплатно
• Доступно
• Легко и просто


@ios_roadmap_academy_2024_bot
🔥31👍1
Forwarded from $wiftuiboy$
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32👍2