2009-04-05 7 views
13

¿Alguien ha pasado tiempo comparando los diversos puentes de Objective C y envolturas de cacao asociadas para Mono?Interfaces de usuario de creación de cacao para OS X con C# y Mono

Quiero portar una aplicación C# existente para ejecutar en OS X. Lo ideal sería que ejecutara la aplicación en Mono, y construiría una UI de Cocoa nativa para ella.

Me pregunto qué puente sería la mejor opción.

En caso de que sea útil para cualquier persona, aquí hay algunos enlaces a los puentes que he encontrado hasta ahora:

Respuesta

5

El equipo Mono ha lanzado un nuevo puente llamado MonoMac.

Es esencialmente la versión de escritorio del marco MonoTouch que produjeron para el iPhone.

Miguel anunció el nuevo puente en su blog aquí: http://tirania.org/blog/archive/2010/Apr-19.html

Una vez MonoMac madura, sospecho que se convertirá en utilizan las personas puente.

0

No va a pregunte por qué, ya que tiene sus razones, estoy seguro.

Me gustaría ver el proyecto Unity3D y ver si se puede saber cómo lo hicieron. Parece, um, difícil.

+0

Gracias por la respuesta. En realidad, estaba interesado en los puentes que ya existen, en lugar de escribir uno nuevo ... –

1

Creo que NObjective es la mejor elección, ya que cuenta con generación automática de código para contenedores Objective-C que se pueden configurar fácilmente para regenerar envoltorios para futuras versiones de Mac OS.

+0

¿Algún comentario sobre para qué lo usaste o problemas que encontraste? –

1

Bien, voy a preguntar: ¿por qué querrías hacer esto? La arquitectura del UI de Cocoa, incluidas las delgadas Cocoa-std y los bindings de cacao, están estrechamente relacionadas con Objective-C. La combinación de Interface Builder y Objective-C es notablemente productiva. Aunque puede utilizar Interface Builder con muchos puentes hacia Objective-C (incluyendo PyObjC, MacRuby y muchos de los puentes C#), inevitablemente perderá productividad debido a cualquier impedancia no coincidente entre el marco y el idioma de su elección. Con C#, esta falta de coincidencia es significativa. Ya que está escribiendo una interfaz de usuario nativa, perdiendo así cualquier ventaja multiplataforma que obtendría de C#, usaría Objective-C. Para un competente C/C++/C#/Java/etc. programador, generalmente toma 2-3 días para sentirse cómodo y productivo en Objective-C.

+1

Respuesta corta: no estoy empezando con una pizarra limpia. Quiero construir una interfaz de usuario Cocoa para una aplicación C# existente (en lugar de utilizar GTK # o WinForms). No vale la pena duplicar mi código actual en Objective C, luego mantener dos conjuntos de código equivalente en el futuro. –

+0

Pero aún puede usar Objective-C para la interfaz de usuario y usar uno de los puentes enumerados en su pregunta para reutilizar su código de modelo existente. Este es el enfoque recomendado para aplicaciones multiplataforma en OS X. –

+2

He pasado un poco más de 2-3 días con Objective-C ahora, y aunque me parece más limpio que C++, todavía es considerablemente más bajo que C# . Como programador de Python, incluso C# se siente bastante bajo y prolijo. Usted gana muchísima productividad yendo con un lenguaje de nivel superior. Un puente C# -Objc bien escrito idealmente te permite tener la mayor parte de tu pastel y comértelo también. – Andz

3

He estado probando Monobjc, NObjective y MObjc/MCocoa con F # últimamente y voy a ir con MObjc/MCocoa.

Monobjc es como usted escribe mejor documentado y empaquetado, pero en comparación con los otros dos muy slow y no "replantea excepciones" de ObjC.

Creo que NObjective y MObjc/MCocoa son los únicos que vuelven a lanzar excepciones de ObjC y es por eso que considero que son las únicas alternativas reales.

Como se discutió here NObjective utiliza structs con herencia que encuentro bastante aterrador y finalmente me hizo elegir MObjC/MCocoa.

(Es posible que haya un problema de licencia también. Monobjc y NObjective está bajo LGPL, MObjc/MCocoa está bajo el MIT ...)

+0

Johan Quité la bandera de respuesta aceptada de su respuesta. Por favor no te ofendas por esto. Su respuesta aún es valiosa, pero creo que MonoMac es el camino a seguir. Quería que esta página reflejara eso. –

+0

Sin ánimo de ofender ... :) También creo que el lanzamiento de MacMono ha cambiado la situación ... –

1

Una bastante larga discusión de los diversos puentes ha tenido lugar en el Mono- Lista de correo de OSX.

La discusión comienza con here Miguel:

  • Al anunciar que el cacao # ya no se mantendrá por Novell.
  • Intentando unificar los esfuerzos restantes en la comunidad.

Si lee el resto de la discusión, parece que la comunidad Mono se inclina hacia Monoobjc o MObjc/MCocoa; entonces, si estás haciendo tus propias investigaciones, probablemente sean ellos quienes se concentren.

+0

He agregado una nueva respuesta a esta pregunta centrada en MonoMac. Dejé esta respuesta intacta en caso de que los detalles sean útiles para las personas interesadas en cómo surgió MonoMac. –