Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика XCode

Разработчик

Используя Swift с какао и Objective C

iBook
На этой странице

Миграция кода Objective C к Swift

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

Подготовка кода Objective C для миграции

Прежде чем Вы начнете перемещать свою кодовую базу, удостоверьтесь, что Ваш Objective C и Код SWIFT будут иметь оптимальную совместимость. Это означает убираться и модернизировать Вашу существующую кодовую базу Objective C. Ваш существующий код должен следовать за современными методами кодирования, чтобы упростить взаимодействовать с Swift беспрепятственно. Для короткого списка методов для принятия перед продвижением посмотрите Принятие современного Objective C.

Процесс миграции

Самый эффективный подход для миграции кода к Swift находится на основе на файл — т.е. один класс за один раз. Поскольку Вы не можете разделить классы Swift на подклассы в Objective C, лучше выбирать класс в Вашем приложении, не имеющем никаких подклассов. Вы замените .m и .h файлы для того класса с синглом .swift файл. Все от Вашей реализации и интерфейса пойдет непосредственно в этот единственный файл Swift. Вы не создадите заголовочный файл; XCode генерирует заголовок автоматически в случае, если необходимо сослаться на него.

Перед запуском

  • Создайте класс Swift для своего соответствующего Objective C .m и .h файлы путем выбора File> New> File> (iOS или OS X)> Источник> Swift Файл. Можно использовать то же или другое имя, чем класс Objective C. Префиксы класса являются дополнительными в Swift.

  • Импортируйте соответствующие системные платформы.

  • Заполните заголовок образования моста Objective C, если необходимо получить доступ к коду Objective C от той же цели приложения в файле Swift. Для инструкций посмотрите Код Импорта из Того же Приложения Target.

  • Для создания класса Swift доступной и применимой спиной в Objective C сделайте его потомком класса Objective C или отметьте его с @objc атрибут. Для указания определенного имени для класса для использования в Objective C отметьте его с @objc(<#name#>), где <#name#> имя, которое Ваш код Objective C будет использовать для ссылки на класс Swift. Для получения дополнительной информации о @objc, посмотрите Swift Соответствие типов.

Как Вы работаете

  • Можно установить класс Swift, чтобы интегрировать поведение Objective C путем разделения на подклассы классов Objective C, принятия протоколов Objective C и т.д. Для получения дополнительной информации, видеть Swift Записи Классы с Поведением Objective C.

  • Поскольку Вы работаете с Objective C APIs, необходимо будет знать, как Swift переводит определенные функции языка Objective C. Для получения дополнительной информации посмотрите Взаимодействие с Objective C APIs.

  • При записи Кода SWIFT, включающего платформы Какао, помните, что определенные типы соединяются мостом, что означает, что можно работать с типами Swift вместо типов Objective C. Для получения дополнительной информации посмотрите Работу с Типами данных Какао.

  • Поскольку Вы включаете образцы Какао в свой класс Swift, посмотрите Принятие Шаблонов разработки Какао для получения информации о переводе общих шаблонов разработки.

  • Для соображений при переводе Ваших свойств от Objective C до Swift считайте Свойства в Swift Язык программирования.

  • Используйте @objc(<#name#>) атрибут для обеспечения Objective C называет для свойств и методов при необходимости. Например, можно отметить вызванное свойство enabled назвать метода get isEnabled в Objective C как это:

    Swift

    • var enabled: Bool {
    • @objc(isEnabled) get {
    • /* ... */
    • }
    • }
  • Обозначьте экземпляр (-) и класс (+) методы с func и class func, соответственно.

  • Объявите простые макросы как глобальные константы и переведите сложные макросы в функции.

После окончания

  • Обновите операторов импорта в своем коде Objective C (к #import "ProductModuleName-Swift.h"), как описано в Импорте Кода из Того же Приложения Target.

  • Удалите исходный Objective C .m файл от цели путем снятия целевого флажка членства. Не удаляйте .m и .h файлы сразу; используйте их для поиска и устранения неисправностей.

  • Обновите свой код для использования имени класса Swift вместо имени Objective C, если Вы дали классу Swift другое имя.

Советы по устранению неисправностей и напоминания

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

  • Помните, что Вы не можете разделить класс Swift на подклассы в Objective C. Поэтому класс, который Вы перемещаете, не может иметь никаких подклассов Objective C в Вашем приложении.

  • Как только Вы перемещаете класс Swift, необходимо удалить соответствие .m файл от цели прежде, чем создать для предотвращения двойной ошибки символа.

  • Чтобы быть доступным и применимым в Objective C, класс Swift должен быть потомком класса Objective C, или это должно быть отмечено @objc.

  • При обеспечении Кода SWIFT в Objective C помните, что Objective C не будет в состоянии перевести определенные функции, которые являются определенными для Swift. Для списка посмотрите Используя Swift от Objective C.

  • Щелчок команды имя класса Swift для наблюдения его сгенерированного заголовка.

  • Щелчок опции символ для наблюдения неявной информации об этом, как ее тип, атрибуты и комментарии для документации.