Какие знаешь недостатки интеропа между Kotlin и Objective-C

«Какие знаешь недостатки интеропа между Kotlin и Objective-C» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Interop между Kotlin и Objective-C имеет несколько недостатков:

  1. Nullability - Kotlin строго типизирован по nullability, а Objective-C нет. Приходится использовать аннотации @Nullable/@NotNull, но они не всегда корректно работают.

  2. Именование методов - Objective-C использует длинные имена методов с параметрами (doSomethingWith:param1 and:param2), что плохо сочетается с Kotlin-стилем.

  3. Обратные вызовы - сложности с передачей лямбд/Kotlin функций в Objective-C код. Часто приходится создавать промежуточные объекты-адаптеры.

  4. Memory management - Kotlin полагается на GC, а Objective-C использует ARC. Это может приводить к утечкам или преждевременным освобождениям памяти.

Пример проблемы с nullability:

// Kotlin
fun process(obj: ObjCObject) {
    obj.nullableMethod()?.let {  // Может быть null, но в Obj-C это не очевидно
        // ...
    }
}