Можно ли использовать swift-код в Codename One native code вместо Objective-C


Мне нужно вставить машинный код в мое приложение с кодовым именем One. Я совершенно новичок в программировании iOS, поэтому мне нужно изучить Objective-C. Однако я читал, что Swift был преемником Objective-C, и я чувствовал бы себя более комфортно с синтаксисом Swift. Но я не знаю, поддерживается ли Swift в Codename One. Глядя на исходный код iOS, созданный Codename One, хотя я не уверен на 100%, он выглядит как код C (я могу ошибаться).

В своем блоге Шанна (от кодового имени One) написала: что

Codename One в настоящее время компилирует все вплоть до простого старого кода C, поэтому мы в значительной степени не пострадаем от такого изменения, хотя некоторые собственные части, использующие Objective – C, нуждаются в обновлении. К счастью, если вы являетесь пользователем с кодовым именем One, вам не нужно беспокоиться об этих деталях, потому что вы работаете на Java.

Я не понимаю, почему я спрашиваю, Можно ли использовать Swift-код в Codename One native код ?

Большое Спасибо, что помогли мне прояснить эту тему!

Ура

1 7

1 ответ:

Да и нет. Вы, вероятно, можете скомпилировать Swift-код в статическую библиотеку уже сегодня (.файл) и просто использовать его, как любой статический lib, где код Objective-C просто действует как мост.

Использование Swift напрямую проблематично из-за нескольких факторов:

  • В настоящее время мы все еще используем более старую версию xcode при построении, мы сделали попытку перейти к последней версии, но у нас была неудача . Мы будем мигрировать, надеюсь, до выхода 3.5, если не в ближайшее время после.
    Swift требует относительно новой версии xcode, поэтому до тех пор, пока мы не сделаем это, внедрение Swift-кода будет проблематичным.

  • Свифт принимает дугу. Это то, что мы пытались интегрировать с GC, но в настоящее время это не очень хорошо работает.

  • Мы должны генерировать заглушки Swift в качестве опции, это проблематично, так как, скажем, у вас есть существующий cn1lib или собственный интерфейс, который полагается на Objective-C, это может создать конфликт.

Но вернемся назад проследите немного. Swift-это огромное преимущество перед Objective-C, который уже довольно стар. Но у него нет никаких серьезных преимуществ для разработчиков Codename One...

  • Это не быстрее, так как кодовое имя One переводится на C, который быстрее, чем Swift и Objective-C

  • Это не сделает код намного чище, если у вас много кода в ваших собственных интерфейсах, то вы делаете что-то неправильно. В любом случае, большая часть вашего кода написана на Java, вы можете обсуждать достоинства Java против Swift, но если вы используете кодовое имя One, то вы в значительной степени выбрали Java.

  • Если вам нужно использовать приложение, написанное на Swift, вы можете упаковать его в статическую библиотеку.

Таким образом, в настоящее время нет реального варианта использования Swift в Codename One.