You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: learning/kotlin-multiplatform/mobile-highlights.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
sidebar_position: 2
3
3
---
4
4
5
-
# Особенности KMM
5
+
# Особенности KMP
6
6
7
7
Что следует учитывать при разработке с использованием Kotlin Multiplatform:
8
8
-`inline`/`value` классы в iOS попадают в виде тех типов, которые оборачивают. то есть `inline class DateTime(val date: String)` в iOS будет просто `String`
@@ -11,16 +11,16 @@ sidebar_position: 2
11
11
12
12
## Kotlin vs Swift — в чем разница
13
13
14
-
1. В котлине есть [анонимные](https://kotlinlang.org/docs/nested-classes.html#anonymous-inner-classes) классы, которые позволяют без создания отдельного именованного класса реализовать интерфейс например;
14
+
1. В котлине есть [анонимные](https://kotlinlang.org/docs/nested-classes.html#anonymous-inner-classes) классы, которые позволяют без создания отдельного именованного класса реализовать интерфейс или абстрактный класс;
15
15
2.[Kotlin for Swift developers](https://kotlinlang.org/docs/swift-overview.html) — официальное руководство по различиям в типах, конструкторах, extension, протоколах и т.д.;
4.[Sealed class vs Swift enum](https://kotlinlang.org/docs/swift-overview.html#sealed-classes).
18
18
19
19
## Конфликты имен на iOS
20
20
21
-
- В iOS у всех объектов есть поле `description` (работает также как Kotlin `toString`) и поэтому при использовании в Kotlin свойств с таким названием будет появляться в iOS дополнительное поле `_description` - которое и будет свойством от Kotlin
21
+
- В iOS у всех объектов есть поле `description` (работает как Kotlin `toString`) и поэтому при использовании в Kotlin свойств с таким названием в iOS будет появляться дополнительное поле `_description` - которое и будет свойством от Kotlin
22
22
23
-
Следующий набор имен на iOS будет конфликтовать либо между собой либо с iOS сигнатурами:
23
+
Следующий набор имен на iOS будет конфликтовать либо между собой, либо с iOS сигнатурами:
24
24
- State (в SwiftUI используется)
25
25
- ключевые слова swift'а
26
26
@@ -50,11 +50,11 @@ plugins {
50
50
51
51
[Compose Multiplatform](https://github.com/JetBrains/compose-multiplatform) — UI-фреймворк от JetBrains на основе Jetpack Compose:
52
52
53
-
-**iOS — Stable** с версии 1.8.0 (май 2025). Текущая версия — 1.10.0 (январь 2026)
53
+
-**iOS — Stable** с версии 1.8.0 (май 2025). Текущая версия — 1.11.0 (май 2026)
54
54
- Поддержка всех платформ: Android, iOS, Desktop (macOS/Windows/Linux), Web (Wasm, Beta)
55
55
-**Compose Hot Reload** — мгновенное обновление UI при изменении кода без потери состояния (стабильно с 1.10.0)
56
56
- Навигация, Material 3, lifecycle, saved state — всё доступно в commonMain
57
-
- Размер приложения для iOS: +~9 МБ относительно чистого SwiftUI
57
+
- Размер приложения для iOS: +~9 МБ относительно чистого SwiftUI
Несмотря на зрелость, у KMP остаются проблемы, которые сообщество ждёт решения:
89
+
Несмотря на зрелость, у KMP остаются проблемы, которые ещё не решены:
90
90
91
91
-**Swift Export** (экспериментальный) — сейчас Kotlin экспортируется в Swift через Objective-C, что теряет многие возможности языка (enum как class, нет async/await из коробки, нет поддержки Swift-only API). Прямой экспорт в Swift решит эти проблемы, но пока не стабилен. Ожидание: стабильный релиз в Kotlin 2.2+
92
-
-**Скорость сборки iOS** — Kotlin/Native компилируется медленнее JVM. JetBrains активно оптимизирует, но для больших проектов сборка iOS-таргета остаётся узким местом
92
+
-**Скорость сборки iOS** — Kotlin/Native компилируется медленнее JVM. JetBrains активно оптимизирует это, но для больших проектов сборка iOS-таргета остаётся узким местом
93
93
-**Отладка shared code на iOS** — брейкпоинты в общем коде не работают из Xcode. iOS-разработчикам приходится открывать IntelliJ IDEA для отладки shared-модуля
94
94
-**Только ObjC interop** — из Kotlin нельзя вызвать Swift-only API (SwiftUI, protocol extensions, замыкания). Приходится писать ObjC-прослойки вручную
95
95
-**Один framework на приложение** — Kotlin/Native генерирует единый framework для iOS, что мешает модульной архитектуре. Решение — в Swift Export и кастомной конфигурации
0 commit comments