2010-01-14 7 views
5

¿Cómo transfiere una aplicación Cocoa/Mac a Windows? Quiero decir, ¿cómo lo harías? Supongamos que la aplicación fue escrita con Objective-C y Cocoa, no hay nada lujoso, no hay un "motor" que se pueda tener en cuenta, etc.¿Cómo transfiere una aplicación Cocoa/Mac a Windows?

¿Reescribir desde cero? No creo que haya grandes superposiciones entre las bases de datos de Mac y Windows, ¿verdad?

+0

¡Gracias por su ayuda, a todos! Valoro las aplicaciones que tienen una sensación de Mac, que se ven y se comportan como si pertenecieran a la Mac. Tan nativo es Cocoa. Creo que los usuarios de Windows apreciarán también una aplicación nativa de Windows. Parece que la única forma de llegar es reescribiendo. – Ron

Respuesta

2

El problema con Objective C es su soporte deficiente en cualquier plataforma que no sea OS X. Puede intentar usar el Cocotron, pero no lo consideraría listo para producción todavía.

Para la portabilidad, una re-escritura está en orden. Con el uso juicioso de C o C++ estándar para el "núcleo" de la aplicación, aún podría implementar el código GUI específico de la plataforma. Si no te gusta el mantenimiento de dos interfaces gráficas de usuario, también puede probar un conjunto de herramientas tales como Qt

+0

Gracias por su ayuda. – Ron

+0

El enlace a [qt.nokia.com] (http://qt.nokia.com) ha cambiado a [qt.io] (http://qt.io) – armanke13

1

¿Conoces Cocotron? Parece que el proyecto puede haber quedado obsoleto, pero de todos modos es un buen punto de partida. Es un proyecto para portar las API principales.

Si su aplicación no está limpiamente separada (es decir, a la MVC) entonces la única solución es una reescritura, creo.

+0

Cocotron se ve bien pero añejo.:-( Y la aplicación será MVC limpia, pero cada parte escrita en Objective-C. En dependerá de CoreData. ¡Gracias por su ayuda! – Ron

+0

Cocotron no está obsoleto. Consulte http://code.google.com/p/cocotron/updates/list – Ken

+0

¡Qué bueno es saber! – Ron

2

Dependiendo de qué objetos y el marco que está utilizando para la aplicación de cacao, que podría ser capaz de salir con el uso gnustep, aunque el El resultado final probablemente sea muy extraño para los usuarios de Windows, y el entorno de desarrollo puede ser un poco difícil de configurar al principio.

+0

Gracias por su ayuda. – Ron

4

Tengo dudas sobre cocotron. No está claro desde el sitio web de cocotron que la cocotron en realidad está lista para producción. Sospecho que sería posible comenzar el desarrollo de nuevas aplicaciones y usar cocotron constantemente para mantener y probar compilaciones de Windows sobre la marcha. Pero adaptarlo a un proyecto existente podría ser una tarea mucho más grande. Tampoco hay alternativas a la cocotron, aparte de tal vez gnustep.

El enfoque práctico para el desarrollo multiplataforma implica el desarrollo de los componentes no gui de su aplicación, una vez, en C o C++. Y luego, usando una biblioteca de GUI multiplataforma como QT, que es MUY buena para generar y usar IU nativa siempre que sea posible o para simular lo que no. Por favor, vaya a qt.nokia.com y descargue la versión más reciente de QTCreator para Windows y Mac: vea cómo la misma aplicación QT se ve y se siente de manera muy convincente como nativa en ambas plataformas.

Si QT no proporciona una solución lo suficientemente nativa, entonces necesita desarrollar su GUI dos veces: una vez en Cocoa y otra en Win32. La GUI de cocoa estaría en el objetivo C, por supuesto, la GUI de Win32 en C/C++.

Su código de aplicación no gui - escrito en C++ - no podrá llamar directamente a Objective-C, pero no es difícil escribir clases de corrección, implementadas en archivos .mm - proporcionar una interfaz C++ y ajustar el acceso a un objetivo c clase o objeto.

También tendrá que encontrar una alternativa a CoreData en Windows, ¿quizás sqlite? Dado que XCode tiene soporte integrado para el marco sqlite, y probar múltiples rutas de código es, bueno, más trabajo, ¿tal vez dejar caer CoreData a favor de una capa común es un mejor enfoque?

Cuestiones relacionadas