Как вы переносите приложение Cocoa / Mac на Windows? - PullRequest
5 голосов
/ 14 января 2010

Как вы переносите приложение Какао / Mac на Windows? Я имею в виду, как бы вы пошли об этом? Предположим, что приложение было написано с Objective-C и Cocoa, в нем нет ничего необычного, нет «движка», который можно было бы разложить на части и т. Д.

переписать с нуля? Я не думаю, что между кодами Mac и Windows будет много совпадений, верно?

Ответы [ 4 ]

4 голосов
/ 14 января 2010

У меня есть сомнения по поводу кокотрона. На веб-сайте cocotron не ясно, что cocotron на самом деле готов к производству. Я подозреваю, что можно было бы начать разработку новых приложений и постоянно использовать cocotron для поддержки и тестирования сборок Windows на ходу. Но преобразовать его в существующий проект может оказаться гораздо более сложной задачей. Также нет альтернативы кокотрону - кроме, возможно, gnustep.

Практический подход к кроссплатформенной разработке включает разработку не-графических компонентов вашего приложения, один раз, на C или C ++. А затем использовать кроссплатформенную библиотеку графического интерфейса, такую ​​как QT, которая ОЧЕНЬ хороша для генерации и использования собственного пользовательского интерфейса, где это возможно, или фальсификации его, где нет. Пожалуйста, зайдите на qt.nokia.com и загрузите последнюю сборку QTCreator для Windows и Mac - посмотрите, как одно и то же приложение QT выглядит и выглядит очень убедительно на обеих платформах.

Если QT не предоставляет достаточно нативного решения, вам необходимо разработать графический интерфейс дважды: один раз в Какао и один раз в Win32. Конечно, графический интерфейс какао должен быть в целевой C, графический интерфейс Win32 в C / C ++.

Ваш код приложения без графического интерфейса - написанный на c ++ - не сможет напрямую вызывать Objective-C, но его нетрудно написать классы shim, реализованные в файлах .mm - предоставить интерфейс c ++ и обернуть доступ цель c объектом или классом.

Вам также придется придумать альтернативу CoreData для Windows - возможно, sqlite? Принимая во внимание, что XCode имеет интегрированную поддержку инфраструктуры sqlite, и тестирование нескольких путей кода - это, конечно, больше работы - может быть, лучше отказаться от CoreData в пользу общего уровня?

2 голосов
/ 14 января 2010

Проблема с Objective C заключается в ее очень слабой поддержке на любой платформе, которая не является OS X. Вы можете попытаться использовать Cocotron , но я не считаю его готовым к работе.

Для переносимости, перезапись в порядке. При разумном использовании стандарта C или C ++ для «ядра» приложения вы все равно можете реализовать код GUI для конкретной платформы. Если вам не нравится поддерживать два графических интерфейса, вы также можете попробовать инструментарий, такой как Qt

2 голосов
/ 14 января 2010

В зависимости от того, какие объекты и инфраструктуру вы используете для своего приложения с какао, вы можете сойти с рук с помощью gnustep , хотя конечный результат, вероятно, будет очень странным для пользователей Windows и разработки поначалу может быть немного сложно настроить среду.

1 голос
/ 14 января 2010

Вам известно о Кокотрон ? Похоже, проект, возможно, устарел, но в любом случае это хорошая отправная точка. Это проект по портированию Core API.

Если ваше приложение не разделено должным образом (то есть: а-ля MVC), то я думаю, что единственным решением является переписывание

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