iOS Broadcast
3.46K subscribers
1.88K photos
86 videos
1.05K links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
Download Telegram
🔨 Stanford CS193p Лекция 4
Заканчиваем неделю уже регулярной еженедельной рубрикой по лекциям из курса по разработке iOS приложений на SwiftUI от Стендфорда. Эта лекция посвящена построению модели игры CodeBreaker и связке её с UI. Это важный этап курса — теперь приложение не просто отображает данные, а игра становится полностью работоспособной с логикой в модели. Вся лекция это лайв кодинг, который отображает подход к иттерационной разработке и выстраивает правильное мышление при решении задачи. Что проходит в лекции:

Повторение архитектуры Model ↔️ View
🔵Model для CodeBreaker — логику игры, проверку ходов, хранение состояния
🔵Отделение логики от UI — ключ к тестируемости и масштабируемости
🔵UI теперь связан с моделью через @StateObject / @ObservedObject / bindings, и игра оживает

Работа с состоянием и обновлениями
🔵Рассматриваются структуры данных и состояния
🔵SwiftUI автоматически реагирует на изменения модели, обновляя интерфейс

Применение Optional, Enum и коллекций
🔵Для Game Status удобно использовать enum и Optional, чтобы чётко описать стадии игры
🔵Такого рода типы делают модель выразительной и безопасной

Интеграция с UI
🔵View без бизнес-логики — модель принимает решения, а UI отображает результат
🔵Обработка событий (нажатие плитки, новая попытка) прокидывается через binding к модели

#cs193p
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🐥 Что нового в Swift — декабрь 2025
Swift подводит итоги года — и обновление декабрьского дайджеста показывает, что язык развивается не только на стороне Apple-платформ, но и в крупнейших open-source-экосистемах.
Проект Swift вырос до 70+ репозиториев, куда еженедельно вносятся улучшения по языку, инструментам, производительности и кросс-платформенности.

Swift 6.2
🟢Делает конкурентность более доступной, сохраняя простоту — сложные фичи появляются когда нужны, но не мешают «обычному» коду
🟢Добавляет WebAssembly-поддержку, усиленную интероперабельность с C++
🟢Улучшает безопасность памяти и инструменты разработки

Язык растёт за пределами iOS/macOS
🟡Embedded Swift — быстро развивается, становится всё более применимым вне экспериментов
🟡Android — рабочие сборки SDK уже доступны: нативная разработка на Swift приближается к реальности
🟡Windows — поддержка зрелая, отличный опыт через VS Code, растёт количество кросс-платформных пакетов
🟡FreeBSD — предпросмотр портирования Swift под FreeBSD 14.3+ с докладом на FOSDEM 2026

Swift в Backend и ML
🔵AWS Lambda Runtime — Swift теперь официально поддерживается как runtime для AWS Lambda — значительный шаг для серверной разработки на Swift
🔵MLX и Swift-среда для машинного обучения на Apple Silicon — растёт спектр инструментов для AI/ML-разработки

Swift Evolution
🟡SE-0501 HTML Coverage Report — возможность выводить HTML-отчёты покрытии тестов в SwiftPM
🟡SE-0497 Controlling function definition visibility — явный контроль видимости функций для оптимизаций и inlining
🟡SE-0493 Async в defer — теперь await можно использовать в defer { … }, что упрощает асинхронную очистку
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
🔨 SwiftText — утилита для извлечения текста из файлов (PDF, DOCX, OCR) на Swift
Это инструмент, который объединяет разные методы получения текста из самых распространённых источников: PDF, DOCX, OCR-изображения и другие.

Что умеет SwiftText
🔵Текст из PDF — сначала пытается извлечь текст из «правильных» PDF (vector), а при неудаче — рендерит страницу и делает OCR через Vision
🔵OCR для битмапов/сканов — делает текст из изображений страниц через Vision OCR
🔵Текст из DOCX — распаковывает Word-документ и парсит XML, получая чистый текст без внешних зависимостей кроме ZIPFoundation
🔵Markdown-вывод — есть возможность выводить результат как Markdown (например, из DOCX)

Как может пригодиться разработчику
🟡Парсинг данных из файлов (банковские выписки, отчёты, документы)
🟡Автоматизация обработки текстов в CLI/инструментах
🟡LLM/AI-функции: удобно доставать текст для дальнейшей обработки или анализа агентами/LLM
🟡Инструменты для DevOps/интеграций: извлечение текста для тестов, логов, проверок

Пример CLI-команд
# получить Markdown из DOCX
swift run swifttext docx file.docx --markdown

# получить текст из PDF
swift run swifttext pdf file.pdf

# OCR текста из битмапа
swift run swifttext ocr image.png
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥7👍1
🎯 Как заставить LLM генерировать код как вы, а не средний по интернету
Большинство разработчиков используют LLM (ChatGPT, Claude, Cursor) из коробки и получают рабочий, но недостаточно качественный код: он компилируется, но не соответствует архитектуре, стилю и практикам, которые вы используете в своем проекте. Это особенно заметно в Swift, так как в тренировочных данных таких примеров меньше, чем, скажем, JavaScript/Python. LLM обучены на статистике текста — они средние по трендовым паттернам интернета, а не специфичным корпоративным/производственным стилям. Поэтому они генерируют код, который компилируется, но:
🔴не учитывает архитектуру вашего проекта
🔴игнорирует Dependency Injection и тестирование
🔴пропускает ваши правила именования и шаблоны

AGENTS.md Это “README для LLM” - высокоуровневое описание архитектуры, команд, workflow, договорённостей:
➡️ цели, ограничения, ожидаемое качество
➡️ структура репозитория
➡️ стиль кода
➡️ архитектурные шаблоны и тесты
➡️ команда/инструменты

Rule Files - Набор правил на уровне доменов:
➡️ Dependency Injection
➡️ SwiftUI архитектура
➡️ Стратегии тестирования
➡️ Стиль коммитов
➡️ Workflow и code patterns
Каждый файл содержит чёткие директивы и примеры кода, которые LLM подгружает только тогда, когда это нужно.

Что это даёт
🔵Код, который выглядит как ваш собственный код, а не среднестатистический
🔵Снижение рефакторинга после генерации
🔵Больше соблюдения правил архитектуры и тестов
🔵Поддержка нескольких AI-инструментов (Claude, ChatGPT, Cursor) на одной основе правил
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🐥 Non-Sendable First Design — новый взгляд на Swift Concurrency
В Swift 6.2 появилась превью новой фичи, под флагом NonisolatedNonsendingByDefault. В комьюнити и форумах swift обсуждается идея, которая набирает отклик в Swift-сообществе: начинать проект с non-Sendable типов и добавлять Sendable / actor только там, где действительно нужна безопасность между потоками. Этот подход предлагает более простой путь к переходу на Swift Concurrency, чем повсеместное использование акторов и Sendable.

В чём суть Non-Sendable First Design:
🔵Sendable — это маркер безопасности для передачи между потоками/акторами, но далеко не все типы в приложении должны быть такими
🔵Идея Non-Sendable First Design заключается в том, чтобы изначально проектировать модели как non-Sendable, пока они не пересекают границы изоляции (то есть не должны быть переданы в Task, actor или другой изоляционный контекст)
🔵Это напоминает принцип «начинай с простого» — избегай лишних аннотаций @MainActor, @Sendable, акторов, пока код фактически не требует потокобезопасного обмена

Почему это может быть полезно:
🔵Меньше шума в коде на старте: не нужно помечать всё акторной изоляцией только из-за страхов компилятора
🔵Упрощение модели данных: простые классы и структуры не обременены проверками Sendable, пока они используются в одном домене
🔵Добавление безопасности по потребности: когда код пересекает границы конкуренции (например, Task или Actor), можно локально добавить Sendable/actor именно туда, где это важно

📌 Статья от Apple
📌 Оригинальный пропоузал
📌 Обсуждение на reddit
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍2🤔1
🔨 Stanford CS193p Лекция 5
Первые дни новогодних праздников позади, а значит пора возвращаться к контенту. Что может быть лучше для начала года чем лекции Стенфорда. Пятая лекция сосредотачивается на архитектуре приложений, модели состояния и связке с UI — это следующий логичный шаг после первых четырёх лекций

🔵Глубокая архитектура приложения — как строить устойчивые, масштабируемые структуры, где Model, ViewModel и View чётко разделены.
🔵Связь модели и UI — через @StateObject, @ObservedObject, @Binding и реактивное обновление View.
🔵Swift Type System в архитектуре — как использовать enum, структуры и Optional для описания состояния приложения
🔵Обработка пользовательских событий — обновление модели, навигация, состояние побед/ошибок.
Все эти подходы помогают перейти от простого UI к полноценному приложению с бизнес-логикой, состояниями и тестируемой моделью

Почему это полезно?
🟡Если вы строите серьёзные приложения на SwiftUI, важно не только знать синтаксис, но уметь проектировать архитектуру
🟡Эта лекция показывает best practices по организации кода, которые работают и для небольших MVP, и для крупных приложений с десятками экранов
🟡Контент из Stanford — один из самых авторитетных источников входа в изучение SwiftUI и архитектуры iOS-приложений

#cs193p
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12
iOS Broadcast
🔨 Stanford CS193p Лекция 5 Первые дни новогодних праздников позади, а значит пора возвращаться к контенту. Что может быть лучше для начала года чем лекции Стенфорда. Пятая лекция сосредотачивается на архитектуре приложений, модели состояния и связке с UI —…
🔨 Stanford CS193p Лекция 6
Новая лекция из курса iOS Development with SwiftUI от Stanford University продолжает тему архитектуры приложений на SwiftUI — от базового разделения Model/View/ViewModel к более сложным паттернам устойчивости и масштабируемости. Лекция полностью состоит из демонстрации, на основе которой после лекции формируется домашнее задание.

Продвинутая архитектура SwiftUI-приложений:
🔵Управление состоянием на уровне всего приложения
🔵Организация логики и зависимостей через Observable, @MainActor, ViewModels
🔵Стратегии для больших проектов (модули, слои, separation of concerns)

Связь Model ↔️ ViewModel ↔️ View
🔵Обновление UI через реактивные свойства (@Published, Binding, @StateObject)
🔵Продвинутые паттерны: сценирование, flows, экраны со сложным состоянием

Работа с навигацией и состоянием
🔵Управление переходами в больших приложениях
🔵Сохранение состояния при смене экранов / вкладок

Домашнее задание:
Создать игру, похожую на CodeBreaker (которую создают в курсе), но с буквами английского алфавита вместо цветных меток, а также со следующими требованиями:
🟢Код и попытки должны быть словами на английском языке. Поэтому в игре используются все 26 букв алфавита как возможные «пины»
🟢UI должен показывать точные и неточные совпадения прямо на буквах (не через отдельные индикаторы)
🟢Кнопки должны быть расположены в виде QWERTY-клавиатуры, чтобы пользователь мог выбирать буквы
🟢Игра должна поддерживать перезапуск, выбор длины слова (от 3 до 6 букв), анимации из предыдущих лекций

#cs193p
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🎯 Agent Skills: отказ от AGENTS.md в пользу переиспользуемых знаний для AI-агентов
Оказывается есть аналог глобального AGENTS.md для каждого проекта. Можно настроить общие подходы через скилы.

Skills заменяют AGENTS.md
🔵AGENTS.md — это единый файл с правилами/правилами для вашего AI-агента, но он обычно включает много проект-специфичной информации, которую трудно переиспользовать
🔵Agent Skills — это отдельные, тематические блоки знаний, хранимые в своих папках и которые можно подключать к разным проектам и инструментам

Skill — это каталог, содержащий:
🔵SKILL.md — файл с описанием навыка / инструкциями.
🔵references/ — дополнительные справочные материалы.
🔵scripts, assets — вспомогательные файлы, шаблоны и прочее

Skills позволяют разделять знания по темам, например:
➡️Swift Concurrency
➡️Testing Patterns
➡️SwiftUI Best Practices
➡️Refactoring Guidelines
и использовать их во всей своей экосистеме AI-инструментов

Автор создал Swift Concurrency Skill с модульной структурой:
swift-concurrency/
├── SKILL.md
└── references/
├ async-await-basics.md
├ actors.md
├ tasks.md
├ memory-management.md
└ …

Это даёт агенту глубокий, структурированный контекст, когда он отвечает на вопросы или делает refactor/анализ кода

Преимущества подхода
🔵Повторное использование: навыки можно применять во многих проектах — больше не нужно копировать и править AGENTS.md в каждом
🔵Структурированность: навыки маленькие, тематические, легче поддерживаются
🔵Поддержка инструментов: многие инструменты (например Claude/Claude Code, Cursor) уже поддерживают стандарт Skills, а стандарт открыт
🔵Более качественные ответы: агенту легче выбирать и подгружать только нужные знания, чем держать весь контекст в одном AGENTS.md

Agent Skills эффективно превращают набор практик и знаний вашего стека в модульные, переиспользуемые блоки. Это даёт:
меньше дублирования
лёгкую поддержку и обновление знаний
более точные ответы от AI-агентов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3