Skip to content

Commit 872a39f

Browse files
author
Kuzmin
committed
fix after review
1 parent e6536aa commit 872a39f

1 file changed

Lines changed: 8 additions & 8 deletions

File tree

learning/kotlin-multiplatform/mobile-highlights.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
sidebar_position: 2
33
---
44

5-
# Особенности KMM
5+
# Особенности KMP
66

77
Что следует учитывать при разработке с использованием Kotlin Multiplatform:
88
- `inline`/`value` классы в iOS попадают в виде тех типов, которые оборачивают. то есть `inline class DateTime(val date: String)` в iOS будет просто `String`
@@ -11,16 +11,16 @@ sidebar_position: 2
1111

1212
## Kotlin vs Swift — в чем разница
1313

14-
1. В котлине есть [анонимные](https://kotlinlang.org/docs/nested-classes.html#anonymous-inner-classes) классы, которые позволяют без создания отдельного именованного класса реализовать интерфейс например;
14+
1. В котлине есть [анонимные](https://kotlinlang.org/docs/nested-classes.html#anonymous-inner-classes) классы, которые позволяют без создания отдельного именованного класса реализовать интерфейс или абстрактный класс;
1515
2. [Kotlin for Swift developers](https://kotlinlang.org/docs/swift-overview.html) — официальное руководство по различиям в типах, конструкторах, extension, протоколах и т.д.;
1616
3. Разница extensions — [раз](../kotlin-native/swift-extensions), [два](https://kotlinlang.org/docs/swift-overview.html#extensions);
1717
4. [Sealed class vs Swift enum](https://kotlinlang.org/docs/swift-overview.html#sealed-classes).
1818

1919
## Конфликты имен на iOS
2020

21-
- В iOS у всех объектов есть поле `description` (работает также как Kotlin `toString`) и поэтому при использовании в Kotlin свойств с таким названием будет появляться в iOS дополнительное поле `_description` - которое и будет свойством от Kotlin
21+
- В iOS у всех объектов есть поле `description` (работает как Kotlin `toString`) и поэтому при использовании в Kotlin свойств с таким названием в iOS будет появляться дополнительное поле `_description` - которое и будет свойством от Kotlin
2222

23-
Следующий набор имен на iOS будет конфликтовать либо между собой либо с iOS сигнатурами:
23+
Следующий набор имен на iOS будет конфликтовать либо между собой, либо с iOS сигнатурами:
2424
- State (в SwiftUI используется)
2525
- ключевые слова swift'а
2626

@@ -50,11 +50,11 @@ plugins {
5050

5151
[Compose Multiplatform](https://github.com/JetBrains/compose-multiplatform) — UI-фреймворк от JetBrains на основе Jetpack Compose:
5252

53-
- **iOS — Stable** с версии 1.8.0 (май 2025). Текущая версия — 1.10.0 (январь 2026)
53+
- **iOS — Stable** с версии 1.8.0 (май 2025). Текущая версия — 1.11.0 (май 2026)
5454
- Поддержка всех платформ: Android, iOS, Desktop (macOS/Windows/Linux), Web (Wasm, Beta)
5555
- **Compose Hot Reload** — мгновенное обновление UI при изменении кода без потери состояния (стабильно с 1.10.0)
5656
- Навигация, Material 3, lifecycle, saved state — всё доступно в commonMain
57-
- Размер приложения для iOS: +~9 МБ относительно чистого SwiftUI
57+
- Размер приложения для iOS: + ~9 МБ относительно чистого SwiftUI
5858

5959
## K2 компилятор
6060

@@ -86,10 +86,10 @@ Kotlin 2.0 (май 2024) представил новый [K2 компилято
8686

8787
## Текущие ограничения
8888

89-
Несмотря на зрелость, у KMP остаются проблемы, которые сообщество ждёт решения:
89+
Несмотря на зрелость, у KMP остаются проблемы, которые ещё не решены:
9090

9191
- **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-таргета остаётся узким местом
9393
- **Отладка shared code на iOS** — брейкпоинты в общем коде не работают из Xcode. iOS-разработчикам приходится открывать IntelliJ IDEA для отладки shared-модуля
9494
- **Только ObjC interop** — из Kotlin нельзя вызвать Swift-only API (SwiftUI, protocol extensions, замыкания). Приходится писать ObjC-прослойки вручную
9595
- **Один framework на приложение** — Kotlin/Native генерирует единый framework для iOS, что мешает модульной архитектуре. Решение — в Swift Export и кастомной конфигурации

0 commit comments

Comments
 (0)