Pregunta

He estado aprendiendo Objective-C y Cocoa a través del libro de Hillegass y se me ocurre que podría estar mejor usando Objective-C ++. Objective-C parece ser la opción clara para desarrollar interfaces de usuario, pero tengo un fondo de C ++ muy sólido y me encantaría desarrollar aplicaciones de fondo en C ++ y utilizar Objective-C ++ para realizar la integración de la interfaz de usuario. Pero me pregunto si Apple seguirá desarrollando Objective-C ++ o se convertirá en un callejón sin salida.

¿Hay alguien por ahí usando Objective-C ++?

¿Fue útil?

Solución

Descargo de responsabilidad: no trabajo ni hablo por Apple, así que esta es mi opinión:

No puedo hablar por las principales tiendas de desarrollo, pero en mi pequeño grupo, hemos utilizado Objective-C ++ tanto para integrar bibliotecas de C ++ como para crear backends en C ++. Como lo menciona @alxp, cosas como el manejo de excepciones a través de los límites del lenguaje son dolorosos, pero con un poco de planificación, la mayoría de estos dolores pueden evitarse. Para los desarrolladores con experiencia en C ++, los beneficios pueden valer la pena.

En términos de soporte, creo que puede asumir que el soporte en su estado actual no desaparecerá en el corto plazo. Es parte de la base de código GCC y la herramienta Clang (la siguiente cadena de herramientas del compilador de Apple) es totalmente compatible con Objective-C ++. Por otro lado, no hay ninguna garantía oficial de que Apple continúe desarrollando la integración & # 8212; solucionando algunas de las verrugas, por ejemplo.

Para los proyectos actuales, diría que si el uso de Objective-C ++ proporciona beneficios, es seguro confiar en el soporte existente y debe usarlo.

Otros consejos

Las únicas veces que he usado ObjC ++ fue a las bibliotecas de puertos para hacerlas accesibles desde mi código ObjC. Los enfrentamientos entre la forma en que ObjC ++ y ObjC manejan cosas como las excepciones y la creación y destrucción de clases simplemente hicieron que fuera un dolor de cabeza hacer malabarismos con los dos idiomas en un solo proyecto.

No creo que el soporte desaparezca pronto como sucedió con Cocoa / Java, ya que es una parte bastante sólida de GCC, y el hecho de que Objective-C ++ se compile directamente en C ++ de la misma manera que Objective-C puede compilar Hasta la C directa, pero todavía no encuentro un entorno muy agradable para compilar software en comparación con Objective-C y poder usar de manera cómoda y completa los marcos provistos por OS X.

Es probable que Objective-C ++ siga siendo compatible siempre que lo sea Objective-C. Obj-C ++ es un objetivo básico para clang , que se espera que reemplace a gcc como el compilador preferido de Apple. Es probable que el uso aumente a medida que las aplicaciones de Carbon se muevan a los frontales de Cocoa.

Por supuesto, la palabra "probable" aparece dos veces arriba porque Apple es increíblemente impredecible. :-)

Sospecho que Apple continuará apoyando Objective C ++ por un tiempo, ya que no veo ningún esfuerzo recurrente significativo requerido por Apple para mantener Objective C ++ a medida que Apple actualiza Cocoa y Objective C ++.

El otro día me sorprendió cuando intenté refactorizar un código Objective-C que estaba dentro de un archivo Objective-C ++ utilizando el soporte de refactorización de Xcode. A pesar de que los elementos del menú están habilitados, obtuve el código "No se puede refactorizar Objective-C ++". Xcode solo puede refactorizar el código C y Objective-C. & Quot; mensaje de error. Entonces, mientras que la compilación de Objective-C ++ seguirá funcionando indefinidamente, sospecho que Objective-C ++ será un ciudadano de segunda clase dentro de Xcode.

Lo saqué de todo mi código. No hay archivos .mm.

Pero necesitas archivos .cpp para hablar con archivos .m. La solución es un archivo .c / .h que mantiene intacta la barrera hematoencefálica.

C ++ con objetivo-C generalmente es demasiado equipaje.

Objective-C es en realidad solo un montón de código C que emula objetos en el lenguaje C, y aún usa el compilador de C, incluidos los archivos de encabezado de Objective-C. El uso de Objective-C ++ utiliza el compilador de C ++ e incluye los encabezados de Objective-C como código C, ya que C ++ ejecutará el código C. Objective-C ++ es esencialmente solo C, C ++ y Objective-C (que en realidad es solo C)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top