المهارات swiftui-expert-skill
📱

swiftui-expert-skill

آمن

Создавайте современные приложения SwiftUI с экспертными лучшими практиками

متاح أيضًا من: avdlee

Разработчики SwiftUI сталкиваются со сложностями управления состоянием и устаревшими шаблонами API. Этот навык предоставляет обоснованные рекомендации для современной разработки на SwiftUI с использованием @Observable, правильной композиции представлений и стилизации Liquid Glass для iOS 26+.

يدعم: Claude Codex Code(CC)
📊 71 كافٍ
1

تنزيل ZIP المهارة

2

رفع في Claude

اذهب إلى Settings → Capabilities → Skills → Upload skill

3

فعّل وابدأ الاستخدام

اختبرها

استخدام "swiftui-expert-skill". Проверьте это представление: struct ProductView: View { @StateObject var vm: ProductViewModel; var body: some View { Text(vm.title) } }

النتيجة المتوقعة:

Найдены проблемы: (1) Использование @StateObject с ObservableObject — предпочтите @Observable класс с @State для нового кода. (2) StateObject должен быть private. (3) Рассмотрите передачу title как let-параметра, если значение только для чтения. Рекомендуется: Используйте @Observable класс, пометьте @State как private, передавайте значения только для чтения напрямую.

استخدام "swiftui-expert-skill". Как обрабатывать навигацию к детальному представлению при тапе по строке списка?

النتيجة المتوقعة:

Используйте NavigationStack с navigationDestination для типобезопасной навигации. Замените NavigationView на NavigationStack на корневом уровне. Используйте NavigationLink с параметром value и модификатором navigationDestination(for:). Это обеспечивает безопасность на этапе компиляции и правильное управление состоянием по сравнению со старыми паттернами NavigationView.

التدقيق الأمني

آمن
v1 • 2/25/2026

Static analyzer produced 226 false positive findings due to pattern matching on markdown documentation content. External command patterns matched file path references like 'references/state-management.md' and Swift code examples, not actual shell execution. Network finding was a GitHub source URL in YAML frontmatter. All blocker findings for cryptographic algorithms and system reconnaissance are incorrect pattern matches on documentation text. No executable code or security risks present.

1
الملفات التي تم فحصها
276
الأسطر التي تم تحليلها
0
النتائج
1
إجمالي عمليات التدقيق
لا توجد مشكلات أمنية
تم تدقيقه بواسطة: claude

درجة الجودة

38
الهندسة المعمارية
100
قابلية الصيانة
87
المحتوى
32
المجتمع
100
الأمان
91
الامتثال للمواصفات

ماذا يمكنك بناءه

iOS-разработчик, создающий новые функции

Используйте при создании новых SwiftUI-представлений для обеспечения правильного управления состоянием с @Observable, использования современных API, таких как foregroundStyle() и NavigationStack, и оптимальной структуры представлений с самого начала.

Проверка кода существующих проектов на SwiftUI

Используйте при аудите легаси-кода SwiftUI для выявления устаревших API, некорректных декораторов свойств, антипаттернов производительности и возможностей для модернизации.

Изучение современных паттернов SwiftUI

Используйте при переходе с UIKit или старых версий SwiftUI для изучения текущих лучших практик передачи данных, композиции представлений и руководств по дизайну Apple.

جرّب هذه الموجهات

Базовая проверка кода
Проверьте это SwiftUI-представление на правильность управления состоянием и использования современных API. Проверьте выбор декоратора свойств, устаревшие API и паттерны композиции представлений.
Рефакторинг легаси-кода
Рефакторьте этот SwiftUI-код для использования современных API. Замените ObservableObject на @Observable, обновите устаревшие модификаторы и оптимизируйте структуру представлений для производительности.
Реализация новой функции
Помогите мне создать новую функцию SwiftUI с правильным потоком данных. Спроектируйте управление состоянием с использованием @Observable, структурируйте представления для оптимального diffing и примените стилизацию iOS 26+ там, где это уместно.
Отладка проблем производительности
Проанализируйте это SwiftUI-представление на проблемы производительности. Выявите ненужные обновления состояния, проблемы идентичности представлений в ForEach, оптимизации горячих путей и причины layout thrashing.

أفضل الممارسات

  • Предпочитайте @Observable вместо ObservableObject для нового SwiftUI-кода с @MainActor для потокобезопасности
  • Держите тело view простым и чистым — извлекайте сложную логику в модели и подпредставления
  • Используйте стабильную идентичность в ForEach с уникальными идентификаторами, никогда не используйте .indices для динамического контента

تجنب

  • Объявление передаваемых значений как @State или @StateObject вместо использования @Binding или let-параметров
  • Использование GeometryReader, когда существуют альтернативы containerRelativeFrame или visualEffect
  • Создание объектов или выполнение тяжёлых вычислений напрямую в теле представления

الأسئلة المتكررة

Следует ли использовать @Observable или ObservableObject для новых SwiftUI-проектов?
Используйте @Observable для всего нового кода. Он обеспечивает автоматическое наблюдение без @Published, работает с вложенными объектами и интегрируется с Swift-конкурентностью. Используйте ObservableObject только для поддержки легаси-кода.
Когда следует использовать @Binding вместо прямой передачи значения?
Используйте @Binding, когда дочернему представлению нужно изменять состояние родителя. Используйте let для значений только для чтения. Если вам нужна реактивность на изменения, но не модификация, используйте var с модификатором .onChange().
Требуется ли стилизация Liquid Glass для iOS-приложений?
Нет, Liquid Glass доступен только на iOS 26+ и должен использоваться только при явном запросе. Этот навык предоставляет fallback-паттерны с использованием .ultraThinMaterial для более ранних версий iOS.
Почему мой ForEach вызывает сбои с динамическими массивами?
Использование .indices в качестве идентичности не работает при изменении порядка массива. Всегда используйте стабильные уникальные идентификаторы, такие как свойство id. Для динамического контента убедитесь, что каждый элемент имеет последовательную уникальную идентичность между обновлениями.
Как отладить неожиданные перерисовки представлений в SwiftUI?
Добавьте Self._printChanges() внутрь тела вашего представления для логирования того, что вызвало обновления. Распространённые причины включают передачу больших объектов конфигурации, избыточные присваивания состояния и зависимости от часто изменяющихся значений.
Может ли этот навык навязывать конкретную архитектуру, такую как MVVM?
Нет, этот навык фокусируется на фактах и лучших практиках, а не на архитектурных мнениях. Он поощряет разделение бизнес-логики для тестируемости, но не навязывает конкретные паттерны, такие как MVVM или VIPER.

تفاصيل المطور

بنية الملفات

📄 SKILL.md