2008-11-06 11 views

Respuesta

53

Respuesta corta, sí, más o menos. Puedes usar Objective-C++, que puedes leer en Apple Developer Connection.

Si ya conoces C++, aprender Objective-C sería bastante simple, si decides probarlo. Más información sobre ese tema también está en el ADC.

+1

¿me puede recomendar un sitio web o un libro dirigido a programadores con experiencia en C++ para aprender Objective-C? Logré combinar algunas aplicaciones de prueba, pero encuentro la sintaxis un poco al revés y estoy seguro de que estoy haciendo cosas que conducen a pérdidas de memoria, etc. solo por falta de conocimiento de Objective-C –

+5

Esa página parece que ya no existe . Cualquier enlace actualizado? – Homer6

+3

@LeaHayes Un libro gratuito llamado "De C++ a Objective-C". Asume que conoce C++ y luego le dice cómo se hacen las cosas de manera diferente en Objective-C. http://pierre.chachatelier.fr/programmation/fichiers/cpp-objc-en.pdf (esta es una traducción al inglés del francés original) – olafure

60

Aunque Objective-C de hecho parece estar "loco" al principio, le recomiendo que se quede con él. Una vez que tienes un momento "a-ha", de repente todo comienza a tener sentido. Para mí, me tomó alrededor de 2 semanas concentrarme en Objective-C para entender realmente los marcos de trabajo de Cocoa, el lenguaje y cómo encaja todo. Pero una vez que realmente "lo entendí", fue muy emocionante.

Suena cliché, pero es verdad. Soportar hasta el fin.

Por supuesto, si trae librerías C++ o código C++ existente, puede usar esos módulos con Objective-C/Objective-C++.

28

En primer lugar, decir que Objective-C es "insano" es gracioso. Tengo el libro Bjarne Stroustrup C++ sentado a mi lado que registra 1020 páginas. El PDF de Apple en Objective-C es 141.

Si desea usar UIKit, será muy, muy difícil para usted hacer algo en C++. Cualquier aplicación seria de iPhone que se ajuste a la IU de Apple necesitará que sus partes UI se escriban en Objective-C. Solo si está escribiendo un juego OpenGL, puede apegarse casi por completo a C/C++.

+25

¿Desde cuándo fue menos buena documentación? "El lenguaje de programación C++" es muy minucioso y también documenta el STL. – Timmmm

+2

@Timmmm: Desde que K & R hizo ese punto en los asuntos principales de su libro. Objective-C es un lenguaje mucho más pequeño que C++, con muchos de los mismos beneficios (y algunos más propios). Todo es intercambios, por supuesto. Pero la documentación mínima hace que Obj-C sea bastante fácil para personas experimentadas con C (o C++) para ponerse al día. –

+59

Lo siento, pero ObjC es una locura. La insistencia en una forma completamente diferente de declarar funciones, el uso de corchetes.Está siendo diferente sin ningún beneficio. Podrían haber redactado el mismo lenguaje efectivo sin la ridícula sintaxis. Eligieron no hacerlo. Por lo tanto, es una locura. – Rhubarb

40

Uso Objective-C para unir la UI.
Pero las tripas duras del código todavía se escriben en C++.

Ese es el objetivo principal de Objective-C la interfaz de la interfaz de usuario y el manejo de los eventos.
Y funciona muy bien para ese propósito.

Aunque todavía me gusta C++ como back-end para el código (pero eso es principalmente porque me gusta C++), fácilmente podría usar Objective-C para el back-end de la aplicación.

+8

@Spanky: cómo o qué hago exactamente. Puede escribir C normal en el archivo * .m. Puede escribir C++ normal en archivos * .mm (Objective-C++). Dentro de los archivos Objective-C (++) puede usar '' #include 'normal como los archivos C/C++. –

14

Teniendo algo de experiencia en esto, puedes usar el código C++ para tu código "central", pero debes usar el objetivo-C para cualquier cosa específica de iPhone.

No intente obligar a Objective-C a actuar como C++. Al principio, te parecerá que esto es posible, pero el código resultante no funcionará bien con Cocoa, y te confundirás bastante sobre lo que está sucediendo. Tómese el tiempo para aprender correctamente, sin ningún tipo de C++, cómo construir aplicaciones de GUI y iPhone, luego enlace en su base de C++.

0

Actualmente estoy escribiendo un marco Objective-C++ llamado Objective-X, que hace posible la PROGRAMACIÓN PURE C++ iPHONE. Puede hacer esto:

#import "ObjectiveX.h" 

void GUIApplicationMain() {  
    GUIAlert Alert; 
    GUILabel Label; 
    GUIScreen MainScreen; 

    Alert.set_text(@"Just a lovely alert box!"); 
    Alert.set_title(@"Hello!"); 
    Alert.set_button(@"Okay"); 
    Alert.show(); 

    Label.set_text(@"Ciao!"); 
    Label.set_position(100, 200, 120, 40); 

    MainScreen.init(); 
    MainScreen.addGUIControl(Label.init());  
} 

y compilarlo utilizando las opciones apropiadas de la línea de comandos de GCC. Ya he compilado esta aplicación de helloworld & w0rkX0rz como un amuleto. ;-) Pronto estará disponible en GoogleCode. Busque Objective-X o visite http://infotronix.orgfree.com/objectivex aprox. ¡una semana después!

Actualizado (pero aparentemente inactivo) URL: http://code.google.com/p/objectivex/

+4

¿Por qué no esperas con la publicación hasta que esté realmente disponible? –

+0

Recibí una advertencia de virus JS: Downloader al visitar ese enlace ... – houbysoft

+8

Ambos enlaces ahora son 404 –

3

Usted tiene que usar Objective C para interactuar con la API Cocoa, por lo que no hay otra opción. Por supuesto, puede usar tanto C++ como desee detrás de las escenas (Objective C++ lo hace fácil).

De hecho, es un lenguaje demente, pero también es ... divertido de usar una vez que estás acostumbrado. :-)

2

Estoy en el proceso de portar una aplicación para Android de computación intensiva escrito en Java para iOS6. Estoy haciendo esto transfiriendo las partes que no son UI de Java a C++, escribiendo las partes UI (mínimas) en Obj-C, y envolviendo las primeras en una interfaz C (pequeña) usando la técnica C/C++ estándar, para que se puede acceder desde Obj-C, que después de todo es un superconjunto de C.

Esto ha sido efectivo hasta ahora, y no he encontrado ningún problema. Parece ser un enfoque legítimo, ya que Xcode le permite crear clases de C++, así como clases de Obj-C, y algunos de los códigos de muestra oficiales hacen las cosas de esta manera. No tuve que salir de ninguna interfaz oficialmente admitida para hacer esto.

Parece que no hay mucho que ganar escribiendo el código de UI restante en C++, incluso si fuera posible, en vista de la ayuda que me dio el constructor de interfaz en Xcode, así que mi respuesta sería que puede usar C++ para casi toda su aplicación, o tanto de lo que considere apropiado/conveniente.

0

Puede ser un poco offtopic, pero de todos modos. Puede programar C++ en dispositivos iOS. Consulte la aplicación CppCode ios - http://cppcode.info. Creo que ayuda aprender c y C++ y objetivo-c más tarde.

1

Sí, pero pensar que puede programar todo tipo de programa en un solo idioma es una idea errónea a menos que esté escribiendo programas muy simples. El objetivo C es para Cocoa ya que C# es para .NET, usa la herramienta adecuada para el trabajo correcto. Intentar hacer que C++ interactúe con Cocoa escribiendo código de puente e intentando hacer que el código de C++ se comporte de acuerdo con los requisitos de Cocoa no es una buena idea. el rendimiento del objetivo C es. Debe tratar de diseñar el diseño y la arquitectura de la aplicación teniendo en cuenta las habilidades existentes y determinar qué parte debe escribirse en qué idioma luego construir en consecuencia.

Cuestiones relacionadas