#cs193p
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Stanford CS193p: iOS Development with SwiftUI | 2025 | L2: Code Breaker App
All course materials are available at https://cs193p.stanford.edu.
The 2nd lecture of the 2025 version of Stanford's CS193p course (developing applications for iOS using SwiftUI). Continues explanation of SwiftUI development by introducing View modifiers…
The 2nd lecture of the 2025 version of Stanford's CS193p course (developing applications for iOS using SwiftUI). Continues explanation of SwiftUI development by introducing View modifiers…
❤4
В статье показано, как без UIKit и мостов, на SwiftUI + Contacts.framework — реализовать экран, где пользователь может заполнить форму и сохранить новый контакт прямо в адресную книгу. Решил что полезно, т.е. большинство подобных туториалов используют устаревшее API.
Что это даёт разработчику:
Важно:
Privacy - Contacts Usage Denoscription).CNMutableContact + CNSaveRequest для записи.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
📱SwiftUI + SharePlay: смотри видео вместе с друзьямиОчень интересно и скорее всего вообще никому не пригодится. Обожаю эти фичи, которые мы видим на WWDC и больше никогда не используем в реальной жизни. SharePlay одна из таких фичей, возможно кто-то из вас нашел ей применение? В статье рассказано как с помощью
Group Activities и AVFoundation сделать в iOS-приложении возможность смотреть видео синхронно на нескольких устройствах.Что нужно сделать:
GroupActivity, описать метаданные (URL, noscript и т.д.).prepareForActivation() → activate(), либо локально воспроизвести.API очень удобный и интуитивный. Кто-то считает это может стать однажды популярным или уже придумал для чего использовать?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Как с помощью MetricKit можно собирать реальные метрики от пользователей: загрузка CPU/памяти, I/O, время запуска, энергопотребление, крэши, hangs и многое другое.
Преимущества:
Что нужно сделать:
MetricKit.MXMetricManager.А если хотите пойти дальше, добро пожаловать предлагаю посмотреть мой доклад на эту тему:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
Работа с async/await и Task в Swift сильно упрощает асинхронный код, но ARC всё ещё делает своё — задачи захватывают объекты, которые используются внутри тела, и могут неявно удерживать память дольше, чем вы думаете. Это может привести к retain-циклам даже без UIKit-замыканий.
Что происходит под капотом:
Task { … }, Swift сильно удерживает все объекты, на которые ссылается тело задачи. Это стандартное поведение ARC: задачи держат захваченные значения до завершения. Owner → task → OwnerКогда это становится проблемой
Как избежать retain-циклов?
weak self в задачахtask = Task { [weak self] in
guard let self else { return }
await self.loadData()
}Если ваша задача запущена на View и должна завершиться при исчезновении UI — отменяйте её вручную:
task.cancel(). Task отменяется, и память освобождается быстрееPlease open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🤔2
В новой лекции разбираются фундаментальные принципы работы SwiftUI через призму архитектуры модели и системы типов Swift — то, что определяет устойчивость и масштабируемость iOS-приложений.
Перемешивание UI и логики. Во многих SwiftUI-проектах View начинает обрастать обязанностями: хранением данных, обработкой логики, сетевыми вызовами. Это приводит к:
Чёткое разделение Model ↔️ View
Связка Model и UI — центральная концепция лекции. SwiftUI ожидает, что:
Это делает приложение устойчивым к изменениям и легко тестируемым.
Swift Type System как фундамент архитектуры. Лекция подчёркивает важность системы типов Swift:
MVVM как естественный путь
CS193p фактически показывает MVVM-подход, но без перегибов:
@Observable / @StateObject.Выводы:
#cs193p
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Часто нужно дать пользователю возможность быстро ответить или ввести текст, не открывая приложение: ответить на сообщение, оставить короткий комментарий, подтвердить действие текстом. Обычные push-уведомления этого не позволяют — только кнопки без контекста.
Требуется
UNTextInputNotificationAction:AppDelegate / Notification ServiceКак это работает
let replyAction = UNTextInputNotificationAction(
identifier: "REPLY_ACTION",
noscript: "Ответить",
options: [],
textInputButtonTitle: "Отправить",
textInputPlaceholder: "Введите сообщение"
)
let category = UNNotificationCategory(
identifier: "MESSAGE_CATEGORY",
actions: [replyAction],
intentIdentifiers: [],
options: []
)
UNUserNotificationCenter.current()
.setNotificationCategories([category])
if let response = response as? UNTextInputNotificationResponse {
let text = response.userText
}Что важно учитывать
UNTextInputNotificationAction — недооценённая, но очень мощная возможность iOS.Позволяет превратить уведомление из «пассивного» в интерактивный элемент, который реально экономит время пользователя.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
Kotlin Multiplatform + gRPC — мощный тандем для мобильной разработки 🚀
О чём поговорим:
— настройка проекта на KMP ⚙️
— построение сетевого слоя на gRPC ⚡️
— интеграция с iOS и нюансы платформы 🍎
— разбор структуры приложения и реальных кейсов 📱
Почему это важно:
Kotlin Multiplatform становится ключевым инструментом для кросс-платформенной разработки, а gRPC обеспечивает быстрые и прозрачные сетевые взаимодействия без лишних обёрток ⚡️📡
Для кого урок:
Для разработчиков, изучающих iOS, интересующихся KMP и стремящихся прокачать архитектурное мышление 🧠💡
Только практика — реальные решения и интеграция в продакшн-проекты.
⏰ Когда: 22 декабря в 20:00 МСК — перед стартом курса «iOS Developer. Professional».
👉 Регистрация открыта
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
О чём поговорим:
— настройка проекта на KMP ⚙️
— построение сетевого слоя на gRPC ⚡️
— интеграция с iOS и нюансы платформы 🍎
— разбор структуры приложения и реальных кейсов 📱
Почему это важно:
Kotlin Multiplatform становится ключевым инструментом для кросс-платформенной разработки, а gRPC обеспечивает быстрые и прозрачные сетевые взаимодействия без лишних обёрток ⚡️📡
Для кого урок:
Для разработчиков, изучающих iOS, интересующихся KMP и стремящихся прокачать архитектурное мышление 🧠💡
Только практика — реальные решения и интеграция в продакшн-проекты.
⏰ Когда: 22 декабря в 20:00 МСК — перед стартом курса «iOS Developer. Professional».
👉 Регистрация открыта
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
При использовании Claude Code стандартные xcodebuild-сборки тормозят на больших проектах, потому что каждый билд проходит полный цикл компиляции. Новое решение — интеграция XcodeBuildMCP, которая позволяет задействовать экспериментальную поддержку инкрементальных сборок
Что это даёт разработчику
Как включить:
claude mcp add -s user XcodeBuildMCP npx xcodebuildmcp@latest \
-e INCREMENTAL_BUILDS_ENABLED=true \
-e XCODEBUILDMCP_ENABLED_WORKFLOWS="simulator,device,project-discovery,session-management" \
-e XCODEBUILDMCP_SENTRY_DISABLED=true
INCREMENTAL_BUILDS_ENABLED=true — включает быстрые incremental-сборкиsimulator, device — включают нужные рабочие группыSENTRY_DISABLED — отключает Sentry-отчёты на время экспериментаPlease open Telegram to view this post
VIEW IN TELEGRAM