2011-07-01 17 views
5

Estoy considerando aprender Objective-C y Cocoa, principalmente para usar las herramientas y GUI de Apple.¿Puedes usar librerías C++ en un proyecto Cocoa (Obj-C)?

Sin embargo, también me gustaría hacer algunos programas de gráficos; OpenFrameworks y Cinder son dos bibliotecas que llaman mi atención, pero luego estamos en C++.

Vengo de un fondo Java/Swing/Processing ... no sé mucho sobre la familia C. ¿Con qué eficacia puede llamar bibliotecas C y C++, como Cinder y OF, del cacao nativo?

Y, puntos de bonificación: ¿una solución como esta funcionaría en un iPhone o iPad?

Respuesta

12

En resumen, C++ está bien para los programas OS X e iOS, y juega con Objective-C bastante bien.

En más detalle:

Sin embargo, también me gustaría hacer algo de programación de gráficos; OpenFrameworks y Cinder son dos bibliotecas que llaman mi atención, pero luego estamos en C++.

No hablaré por esas bibliotecas directamente.

Para responder a su pregunta en términos más generales: C++ está bien en su aplicación, ya que C, C++, ObjC y ObjC++ son lenguajes de desarrollo de primera clase para las aplicaciones de iOS.

Vengo de un fondo de Java/Swing/Processing ... no sé mucho sobre la familia C. ¿Con qué eficacia puede llamar bibliotecas C y C++, como Cinder y OF, del cacao nativo?

Objective-C++ permite el uso de C, C++ y Objective-C en la misma traducción. Siéntase libre de usar/combinar C++, C u ObjC cuando sea necesario. Los tiempos de compilación aumentarán, y hay algunas restricciones * si toma esta ruta. De lo contrario, el soporte es muy bueno. Incluso Apple usa una buena cantidad de C++ en sus aplicaciones/librerías.

Y, puntos de bonificación: ¿una solución como esta funcionaría en un iPhone o iPad?

Definitivamente. El soporte de C++ 11 para iOS y OS X actualmente está un poco retrasado. Sin embargo, el equipo clang ha estado agregando soporte muy rápido. Es probable que haya algunos baches si quieres las últimas características, por lo que yo diría que retenga las características del borde de C++ y del compilador si su proyecto depende de ello. Por supuesto, no hace daño muestrear su programa usando las últimas funciones de clang con cada lanzamiento para determinar qué tan bien funciona con sus programas.

Actualización: En este momento (8 de noviembre de 2011) clang puede manejar casi todo el código de C++ 2003 que lanzo sobre él. La velocidad y el tamaño del código varían en comparación con GCC + LLVM. No me gustaría dejar caer tampoco en este momento, pero ambos compiladores funcionan bien para mí con C++ 2003, y el GCC de Apple no admite C++ 11, por lo que es un buen momento para comenzar a probar clang si quieres las características de C++ 11 en el futuro cercano.

  • C++ es ideal (IMO) para el desarrollo crítico de rendimiento general en iOS, siempre que su equipo sepa cómo usarlo.
  • Mezclar C, ObjC y C++ es muy poderoso si utiliza las funciones correctas de cada idioma por las razones correctas, y existe una buena compatibilidad. Esto llega años atrás desde OS X (aunque el compilador era GCC en ese momento).

* restricciones: estas son restricciones razonables: todas las funciones que necesita existen, pero hay algunas cosas que las personas pueden esperar que no son posibles. la más común es la incapacidad de derivar tipos de modelos de objetos diferentes. es decir, no puede razonablemente no crear un tipo de C++ a partir de un tipo objc, pero puede declarar libremente ivars de múltiples tipos en cualquier tipo de objeto.

3

A partir de ahora puede usar Cinder desde dentro de un proyecto típico de Cocoa a través del nuevo CocoaCinderGL wrapper. Le permite agregar varios NSCustomView a su aplicación, cada uno ejecutando una "instancia" independiente de Cinder. Y, obviamente, puede conectar tantos NSButtons, NSSliders como desee a esas instancias. ¡Espero que ayude!

Cuestiones relacionadas