Ответ
Interop между Kotlin и Objective-C имеет несколько недостатков:
-
Nullability - Kotlin строго типизирован по nullability, а Objective-C нет. Приходится использовать аннотации
@Nullable/@NotNull, но они не всегда корректно работают. -
Именование методов - Objective-C использует длинные имена методов с параметрами (
doSomethingWith:param1 and:param2), что плохо сочетается с Kotlin-стилем. -
Обратные вызовы - сложности с передачей лямбд/Kotlin функций в Objective-C код. Часто приходится создавать промежуточные объекты-адаптеры.
-
Memory management - Kotlin полагается на GC, а Objective-C использует ARC. Это может приводить к утечкам или преждевременным освобождениям памяти.
Пример проблемы с nullability:
// Kotlin
fun process(obj: ObjCObject) {
obj.nullableMethod()?.let { // Может быть null, но в Obj-C это не очевидно
// ...
}
}