Skip to main content

Особенности KMM

Что следует учитывать при разработке с использованием Kotlin Multiplatform Mobile:

  • inline/value классы в iOS попадают в виде тех типов, которые оборачивают. то есть inline class DateTime(val date: String) в iOS будет просто String

Kotlin vs Swift - в чем разница

  1. В котлине есть анонимные классы, которые позволяют без создания отдельного именованного класса реализовать интерфейс например;
    1. анонимные классы пришли из Java и подробнее разобраны тут в контексте Java.
  2. Сравнение языков на примерах:
    1. https://habr.com/ru/post/350746/;
    2. https://www.raywenderlich.com/6754-a-comparison-of-swift-and-kotlin-languages;
    3. https://levelup.gitconnected.com/swift-vs-kotlin-which-is-better-696222a49a34;
    4. https://medium.com/@anios4991/swift-vs-kotlin-the-differences-that-matter-80a46090d9c6.
  3. Разница конструкторов классов;
  4. Разница extensions - раз, два;
  5. Абстрактные классы.

Kotlin + Swift IDE

AppCode позволяет разрабатывать и Kotlin и Swift код одновременно. Видео с демонстрацией

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

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

Следующий набор имен на iOS будет конфликтовать либо между собой либо с iOS сигнатурами:

  • State (в SwiftUI используется)
  • ключевые слова swift'а

(!) Если у объекта есть функция и переменная с одинаковым именованием, то Swift будет видеть только последнюю из объявленных.

Полезные вопросы на подумать из kotlinlang.slack

https://youtu.be/5QPPZV04-50 - запись с Kotlin 1.4 online event про мпп детали