Ios+Котлин. Что Ты Можешь Сделать Сейчас?

Пример появился в основной ветке проекта Kotlin Native. уикит .

Это простое iOS-приложение, которое отображает строку, введенную в поле ввода, и да, 100% кода написано на Kotlin. Это выглядит так:

iOS+Котлин.
</p><p>
 Что ты можешь сделать сейчас?



Стоит ли задуматься о портировании вашего приложения сейчас?

Да, но только если: 0).

Что вам действительно нужно, так это общая база кода мобильного приложения.

1).

Приложение имеет мало общего с платформой.

2).

У вас есть время написать код на Kotlin, который в будущем следует переписать на Objective-C или Swift.

Причины пока не портировать

ViewController, AppDelegate и даже основная функция в примере написаны на Kotlin. Те файлы, которые написаны на Objective-C, нужны только для того, чтобы XCode не выдавал ошибку и не попадал в финальную сборку (способов исправить ситуацию я не нашел).

Те.

Полноценного взаимодействия, подобного Java, видимо, пока нет. Это вовсе не означает, что к релизу ситуация не изменится (проект сейчас находится на стадии альфа-превью, и об этом примере даже есть пост в блог не было).

Но спектр доступных сейчас возможностей весьма ограничен.



Взаимодействие

Идиоматический подход к написанию мультиплатформенного приложения на Kotlin — писать общую часть отдельно, а часть — отдельно для каждой платформы.

Причём на каждой платформе, по задумке, все написанные для неё библиотеки должны быть легко доступны.

В случае с Java это работает хорошо.

В случае с iOS дела обстоят сейчас следующим образом:

   

@ExportObjCClass class KotlinViewController : UIViewController { constructor(aDecoder: NSCoder) : super(aDecoder) override fun initWithCoder(aDecoder: NSCoder) = initBy(KotlinViewController(aDecoder)) @ObjCOutlet lateinit var label: UILabel @ObjCOutlet lateinit var textField: UITextField @ObjCOutlet lateinit var button: UIButton @ObjCAction fun buttonPressed() { label.text = "Konan says: 'Hello, ${textField.text}!'" } }

Это очень хорошо.

К каждому внешнему классу, к каждому графическому элементу из раскадровки добавляем аннотацию @ExportObjCClass — @ObjCOutlet и @ObjCAction для каждого действия.

Классы Objective-C доступны по их первоначальным именам.



Если вам нужно вызвать Kotlin из Objective-C/Swift

В этом статья описывает, как это можно сделать.

После определенного количества слоев с ручным преобразованием типов 2 раза, но можно вызывать Swift из Kotlin и Kotlin из Swift.

Накладные расходы

По идее вес приложения должен увеличиться примерно на 100 Кб( отсюда ).

Вместо GC будет использоваться ARC, поэтому большой разницы в производительности со Swift не должно быть.



Обратная совместимость

Судя по отчеты членов команды разработчиков языка, обратная совместимость является одним из их главных приоритетов.

Насколько это хорошо – судить вам.

Лично я считаю, что он намного лучше, чем Swift, и в целом язык хорош, и большинство головоломки выглядеть надуманным.

Но есть 1 вещь, которая, на мой взгляд, может оказаться «бомбой замедленного действия», которую невозможно исправить обратной совместимостью.



в соответствии

Для реализации сопрограммы , которые делают синхронный и асинхронный код практически идентичными, в язык было введено лишь одно новое ключевое слово suspend, что разработчики заслуженно гордимся .

Но для того, чтобы методы расширения ( для каждого , карта.

) работало так же быстро, как и обычно для (и для вывода общих типов во время выполнения программы), целых 3 ( встроенный, кросс-лайн, ноинлайн ).

Они явно не делают код более читабельным.

JIT теряет некоторые возможности оптимизации ( подкаст об этом ), а опыт C показывает, что разработчики не знают, как правильно использовать такие возможности языка.

В общем, я не понимаю, почему то же самое нельзя было сделать в виде аннотации.

На мой взгляд, inline — плохое решение достойной проблемы.



Заключение

  • Скоро на Kotlin можно будет писать для всех трёх основных платформ (Android, iOS, Web).

  • Скорее всего будет хорошая совместимость с Objective-C и Swift. Возможно, лучше, чем то, что находится между этими языками.

    Учитывая опыт JetBrains в разработке компиляторов и IDE, это вполне правдоподобно.

  • Kotlin имеет легкий язык выполнения для Android и Интернета.

    Под iOS, судя по всему, тоже не составит большого труда.

  • Уже сейчас можно что-то написать.

Теги: #Kotlin #разработка для Android #разработка для iOS #Android #iOS #Разработка для iOS #Разработка для Android #Kotlin
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.