Каков наилучший способ портировать с Objective-C на C ++? - PullRequest
6 голосов
/ 01 апреля 2009

У меня нет опыта работы с Objective-C, но у меня сильный опыт работы с C ++. Существует ли автоматизированный инструмент / скрипт или, в худшем случае, какой-то ручной метод, использующий отличную ссылку на код порта, написанный на Objective-C на C ++? Какие сложности связаны с этим?

Edit: Мне сказали, что код использует Objective-C довольно тривиально. Это приложение для iPhone, которое, вероятно, не использует интерфейс пользовательского уровня на уровне ОС. Версия C ++ предназначена для не-Apple платформы, где GNUStep не вариант, поэтому Objective-C ++ не вариант.

Ответы [ 3 ]

6 голосов
/ 01 декабря 2009

Я работал над той же проблемой. И есть несколько решений:

  • Microsoft теперь предлагает свой собственный «мост» Objective C, хотя только для приложений UWP.

    https://github.com/Microsoft/WinObjC

  • В 2007 году я попытался поддержать Objective-C в Visual Studio и написал собственную среду выполнения ObjC, но у меня нет больше времени для написания парсера для нее. Если у вас есть, вы можете:)

    http://code.google.com/p/qobjc/

  • Я написал основные функциональные возможности Foundation Framework на C ++. В этом случае вам нужно портировать вручную; ваш код будет на C ++, но будет как на Objective-C. Эта библиотека работала на iPhone.

    http://code.google.com/p/dcocoa/

3 голосов
/ 01 апреля 2009

Нет автоматизированных инструментов, о которых я знаю. Динамическую природу Objective-C очень трудно перевести на C ++, поэтому для всего, кроме тривиального кода Objective-C, потребуется немало усилий. Готовы ли вы остаться на OS X (или сохранить зависимость GNUStep, если вы один из немногих, кто использует Objective-C в ОС, помимо OS X)? Если это так, самый простой подход - использовать Objective-C ++ для построения моста между кодом Objective-C и C ++. Objective-C ++ - это расширение Apple для Objective-C и компилятора GCC, которое позволяет смешивать код Objective-C и C ++. Таким образом, вы можете создавать объекты Objective C, которые вызывают или ссылаются (но не наследуют) на объекты C ++, и вы можете отправлять сообщения Objective C в экземпляры Objective C из кода C ++.

0 голосов
/ 01 апреля 2009

Objective-C был просто препроцессором (и библиотекой времени выполнения). Вы найдете больше проблем при переносе всех библиотек, чем код конечного пользователя. При переводе с нуля будет весело.

Вероятно, вы начнете видеть плохой дизайн во всем коде c ++ после некоторого использования сред Objective-C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...