¿Programar para iphone sin Objective-c?

¿Se puede programar una aplicación para iphone sin utilizar Objective-c? ¿Sólo con C++ por ejemplo? Gracias!
Sin haberlo hecho nunca tengo entendido que no se puede del todo, aunque creo que si puedes crear tu aplicación en C++ y linkarla despues con Objetive-C. De todos modos mejor espera a que alguien con experiencia en IPhone conteste porque solo hablo de oídas.
¿De qué clase de aplicación estamos hablando? Es que si es un juego en OpenGL se puede crear el 99% del juego en C o C++. Si hablamos de una app que use el SDK oficial de Apple no te queda otra que usar Obj-C (lo que no quita que puedas usar entre medias C o C++, para la parte lógica o la parte de modelo por ejemplo, pero la parte gráfica debe hacerse usando Obj-C)

Saludos [bye] [bye]
Puedes programar en C#, gracias al proyecto MonoTouch: http://monotouch.net/ Aunque los precios...
Existen entornos alternativos como Apcelerator Titanium que te permiten programar en Javascript o similares y luego el programa lo pasa a Objective C.
Saludos
Airplay SDK te permite crear programas completamente en C++, ademas la licencia (de Airplay sdk) para publicar en AppStore es gratis.
Bennugd... ya estan con el port y funciona muy bien y simple.
Yo lo he probado ya.
iceman755 escribió:Airplay SDK te permite crear programas completamente en C++, ademas la licencia (de Airplay sdk) para publicar en AppStore es gratis.


+1

Ademas si compras licencias para airplay puedes compilar para otros SO (symbian, android...) con el mismo code
Con el SDK de Apple puedes mezclar Obj-C y C/C++ en tu programa alegremente, sin problemas.
Ahora mismo estoy en la página de Airplay SDK, le estoy echando un vistazo. ¿Es cierto que podrías usar Visual Studio para realizar aplicaciones para IOS? Para mí sería lo ideal, años y años programando en Visual Studio, no me termino de integrar con XCode.
Sylpheed escribió:Ahora mismo estoy en la página de Airplay SDK, le estoy echando un vistazo. ¿Es cierto que podrías usar Visual Studio para realizar aplicaciones para IOS? Para mí sería lo ideal, años y años programando en Visual Studio, no me termino de integrar con XCode.


Si es cierto, y creo que en la ultima version (del Airplay SDK, la del 4-feb-2011) que han lanzado ya ni siquiera es necesario Mac OS X para firmar las aplicaciones para IOS.
Descargándolo me hallo, a ver en qué queda

Edito: Instalado. De momento no encuentra una cabecera y además me dice que tengo una versión trial de 30 días....
Para conseguir la licencia "iPhone" (asi se llama) en el recuadro de este enlace le das al boton "get" debajo de "iPhone".

Te recomiendo que mires los tutoriales de iniciacion, sobretodo sobre los archivos .mkb.

Cual sera esa cabecera???
Gracias iceman :) Hoy cuando llegue a casa lo probaré que entre trabajo y estudio no me da tiempo a nada

Edito: ya he obtenido la licencia de iphone. El error que me daba ya se soluciono añadiendo una ruta al directorio del VS. He compilado el juego de los karts del tiron, la compilacion es extremadamente limpia para las expectativas que tenia. Lo unico que me queda por ver es la doc a ver hasta que nivel de abstraccion llega la api. Con poder usar instrucciones nativas de opengl me doy con un canto en los dientes.
Ya me he metido de lleno.

He estado mirando muchos ejemplos que vienen con el SDK. De momento sólo estoy implementando un cubo que se muestre en pantalla, traslación y orientación de la cámara y picking. Sólo me queda esto último.

La librería a priori parece muy "sólida", pero las funciones están demasiado a "bajo nivel", es decir, parece más una API un poco más abstracta que un framework ó librería. Por ejemplo, el picking debes implementarlo tú mismo con trazado de rayos (hay un ejemplo de cómo se hace).

Los nombres de las clases me parecen muy difíciles de escribir, menos mal que Intellisense hace el resto.

A la espera de profundizar más, me parece una buena librería. Eso sí, es una gozada desarrollar en Visual Studio y quitarme de encima XCode :cool:
Cierto, es mas un API y los nombres de las clases parecen sacado debajo de las piedras xDDDD

Por otra parte, un colega y yo hemos estado trabajando en ciertas clases para evitarnos algunos rollos que conlleva realizar ciertas cosas que, por la forma en que pensamos, deberían ser hechas en una linea, un ejemplo de ello es la traslación, hemos creado clases que nos permite no tener que manipular directamente la matrix asociada para tal acción.

Esas clases que digo no están optimizadas del todo, pues aun no estamos de lleno en el desarrollo de algún juego (o sea, están a falta de prueba real), a falta de algunas cosas por terminar (el sistema de partículas sobretodo), estaremos compartiendo dichas clases una vez esten listas.

Yo por el contrario, feliz con XCODE, no se, hay código (no sobre airplay) que en todo compilador C++ me compila sin problemas, sin embargo en Visual Studio da errores (sobre todo cuando creo clases singleton).
Es raro eso que comentas del Visual Studio, nunca he tenido problemas, ni con singletons tampoco :-?

Cierto lo de la traslación, es un poco chocante.

Por otra parte, llevo 20 minutos buscando algún método para devolver la inversa de una matriz y no encuentro nada }:/ ¿sabes si existe tal método o hay que implementarlo?

Edito: Ya no me hace falta lo de la matriz, he buscado otra forma de hacerlo. Sin embargo, me estoy rayando con la forma de pasar el flujo de posiciones de vértices y normales. Siguiendo el ejemplo, estoy pasando las posiciones con vectores de 3 dimensiones de enteros con signo de 16 bits. Vamos, que estoy restringido a +- 2^15 posibles posiciones, poco más de 32000. Supongo que esto es lo normal en dispositivos móviles (nunca he programado para otra cosa que no sea PC). Mirando la API sólo permite pasar posiciones de 32 bits por dimensión usando IwGxSetVertStreamViewSpace. ¿Es esto normal?

Vuelvo a editar: Los 32 bits se refieren a enteros de 32 bits, ¿¿¿no permite posiciones usando floats???

Y otra vez vuelvo a editar: Pues no, parece que no hay otra forma:

"Vertex stream: always required for any drawing. Stream entries are always of type CIwSVec3 for 3D drawing and CIwSVec2 for 2D drawing."
Sylpheed escribió:Es raro eso que comentas del Visual Studio, nunca he tenido problemas, ni con singletons tampoco :-?

Cierto lo de la traslación, es un poco chocante.

Por otra parte, llevo 20 minutos buscando algún método para devolver la inversa de una matriz y no encuentro nada }:/ ¿sabes si existe tal método o hay que implementarlo?

Edito: Ya no me hace falta lo de la matriz, he buscado otra forma de hacerlo. Sin embargo, me estoy rayando con la forma de pasar el flujo de posiciones de vértices y normales. Siguiendo el ejemplo, estoy pasando las posiciones con vectores de 3 dimensiones de enteros con signo de 16 bits. Vamos, que estoy restringido a +- 2^15 posibles posiciones, poco más de 32000. Supongo que esto es lo normal en dispositivos móviles (nunca he programado para otra cosa que no sea PC). Mirando la API sólo permite pasar posiciones de 32 bits por dimensión usando IwGxSetVertStreamViewSpace. ¿Es esto normal?

Vuelvo a editar: Los 32 bits se refieren a enteros de 32 bits, ¿¿¿no permite posiciones usando floats???

Y otra vez vuelvo a editar: Pues no, parece que no hay otra forma:

"Vertex stream: always required for any drawing. Stream entries are always of type CIwSVec3 for 3D drawing and CIwSVec2 for 2D drawing."

Los Singletons dan muchos problemas en general. Yo los he prohibido. Solo dejo un Singleton por proyecto, por que con los Singletons tienes muchos poblemas a la hora de inicializarlos, resetearlos o liberarlos, por culpa de las interdependencias entre ellos, aparte de los problemas de portabillidad debido a las diferentes maneras de implementarlos.

Yo la verdad, si fuera vosotros, no usaria el Airplay. Lo que quereis hacer se puede hacer perfectamente con C/C++ y OpenGL. Os estais complicando la vida con una API cuyo objetivo es hacer un deployment sencillo entre varias plataformas, y si estais aprendiendo y trasteando, no os interesa perder el tiempo lo mas minimo con eso.

Por cierto, C + OpenGL es lo mas estandar del mundo. De hecho podeis hacer la parte de vuestro juego en C+OpenGL en el Visual Studio normalmente y luego en el XCode hacer la inicializacion de la aplicacion en ObjC (que son 40 lineas de codigo) y luego pegar ahi lo que habeis hecho en el VS.
ffelagund escribió:
Sylpheed escribió:Es raro eso que comentas del Visual Studio, nunca he tenido problemas, ni con singletons tampoco :-?

Cierto lo de la traslación, es un poco chocante.

Por otra parte, llevo 20 minutos buscando algún método para devolver la inversa de una matriz y no encuentro nada }:/ ¿sabes si existe tal método o hay que implementarlo?

Edito: Ya no me hace falta lo de la matriz, he buscado otra forma de hacerlo. Sin embargo, me estoy rayando con la forma de pasar el flujo de posiciones de vértices y normales. Siguiendo el ejemplo, estoy pasando las posiciones con vectores de 3 dimensiones de enteros con signo de 16 bits. Vamos, que estoy restringido a +- 2^15 posibles posiciones, poco más de 32000. Supongo que esto es lo normal en dispositivos móviles (nunca he programado para otra cosa que no sea PC). Mirando la API sólo permite pasar posiciones de 32 bits por dimensión usando IwGxSetVertStreamViewSpace. ¿Es esto normal?

Vuelvo a editar: Los 32 bits se refieren a enteros de 32 bits, ¿¿¿no permite posiciones usando floats???

Y otra vez vuelvo a editar: Pues no, parece que no hay otra forma:

"Vertex stream: always required for any drawing. Stream entries are always of type CIwSVec3 for 3D drawing and CIwSVec2 for 2D drawing."

Los Singletons dan muchos problemas en general. Yo los he prohibido. Solo dejo un Singleton por proyecto, por que con los Singletons tienes muchos poblemas a la hora de inicializarlos, resetearlos o liberarlos, por culpa de las interdependencias entre ellos, aparte de los problemas de portabillidad debido a las diferentes maneras de implementarlos.

Yo la verdad, si fuera vosotros, no usaria el Airplay. Lo que quereis hacer se puede hacer perfectamente con C/C++ y OpenGL. Os estais complicando la vida con una API cuyo objetivo es hacer un deployment sencillo entre varias plataformas, y si estais aprendiendo y trasteando, no os interesa perder el tiempo lo mas minimo con eso.

Por cierto, C + OpenGL es lo mas estandar del mundo. De hecho podeis hacer la parte de vuestro juego en C+OpenGL en el Visual Studio normalmente y luego en el XCode hacer la inicializacion de la aplicacion en ObjC (que son 40 lineas de codigo) y luego pegar ahi lo que habeis hecho en el VS.


He dejado Airplay para otra ocasión. No me parece para nada una API intuitiva y siendo mi objetivo sólo una plataforma no merece la pena aprenderse todo el SDK.
De todas maneras, la única ventaja que obtenía al utilizarlo es poder trabajar en Windows y Visual Studio, me tendré que amoldar definitivamente al XCode. Menos mal que haciendo bindings y demás historias se puede dejar algo parecido al Visual Studio.

Este fin de semana he montado el proyecto en XCode para utilizar OpenGL y de momento me va de maravilla. Estoy muy habituado a OpenGL y eso simplifica mucho las cosas, si bien es cierto que debido a la versión ES estaré un poco limitado. Y como bien comentas, no hace falta el uso masivo de Objective-C, puedes hacer el core en C++ y las llamadas indispensables en Objective-C. La gran jodienda será cuando necesite usar algún UI, tendrán que ser "caseros".
Puedes hacer el UI en ObjC y pintar en el resto de la pantalla con OpenGL. Una pantalla de OpenGL no es mas que otro UIView, que es de donde derivan el resto de controles. Puedes mezclarlos sin problema. Aunque para una portabilidad 95%, aconsejo hacerse uno mismo una libreria de widgets y asunto solucionado. Mas facil, mas integrado y mas portable.

De esta manera hemos portado juegos de iPhone a Android en menos de 3 dias de trabajo.
Implementar widgets basicos como botones o texto estatico es relatovamente simple, pero si ya nos metemos en listas, combo box, etc me complicaria mucho la vida
20 respuestas