В новой лекции разбираются фундаментальные принципы работы 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
👍2
Выпустили статью про наши оптимизации
JSONDecoder/Encoder. Очень советую к прочтению, получил огромное удовольствие при редактуре. Почему Codable тормозит?
Codable для API-ответов, UserDefaults, кешей и пр. — и именно от его скорости часто зависит старт/UI-ответ.swift_conformsToProtocolMaybeInstantiateSuperclasses. Эти вызовы оказываются самой медленной частью сериализации/десериализацииCodingKeys) — тем хуже масштабируется производительностьОптимизации в JSONDecoder/Encoder
Чтобы ещё сильнее ускорить, мы конвертировали модели на уровне генерации кода:
init(from:)/encode(to:) без CodingKeysВыводы
Codable может быть узким местомCodingKeys и сокращение количества протоколов, через которые проходит парсинг — реально влияет на производительностьPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4