Sou a favor da diversidade de idiomas, mas o Objetivo C é insano. Então, estou curioso: é possível codificar aplicativos do iPhone com C ++ enquanto estiver usando a API do cacau, etc.?
Sou a favor da diversidade de idiomas, mas o Objetivo C é insano. Então, estou curioso: é possível codificar aplicativos do iPhone com C ++ enquanto estiver usando a API do cacau, etc.?
Respostas:
Resposta curta, sim, mais ou menos. Você pode usar o Objective-C ++, sobre o qual você pode ler no Apple Developer Connection.
Se você já conhece o C ++, aprender Objective-C seria bem simples, se você decidisse tentar. Mais informações sobre esse tópico estão no ADC também.
Embora o Objective-C pareça realmente "insano" inicialmente, encorajo você a continuar com ele. Depois de ter um momento "a-ha", de repente tudo começa a fazer sentido. Para mim, foram necessárias cerca de duas semanas de concentração objetiva-C para realmente entender as estruturas de cacau, a linguagem e como tudo se encaixa. Mas uma vez que eu realmente "entendi", foi muito, muito emocionante.
Parece clichê, mas é verdade. Aguenta.
Obviamente, se você estiver trazendo bibliotecas C ++ ou código C ++ existente, poderá usar esses módulos com Objective-C / Objective-C ++.
Eu uso o Objective-C para dar um tapa na interface do usuário.
Mas a coragem do código ainda está escrita em C ++.
Esse é o principal objetivo do Objective-C, a interface da interface do usuário e a manipulação dos eventos.
E funciona muito bem para esse fim.
No entanto, ainda gosto de C ++ como back-end para o código (mas isso é principalmente porque gosto de C ++). Você poderia facilmente usar o Objective-C para o back-end do aplicativo.
#include <XXX>
como os arquivos C / C ++.
Primeiro, dizer que Objective-C é "insano" é engraçado - eu tenho o livro Bjarne Stroustrup C ++ ao meu lado, com 1020 páginas. O PDF da Apple no Objective-C é 141.
Se você deseja usar o UIKit, será muito, muito difícil fazer algo em C ++. Qualquer aplicativo sério para iPhone que esteja em conformidade com a interface do usuário da Apple precisará que suas partes da interface do usuário sejam escritas no Objective-C. Somente se você estiver escrevendo um jogo OpenGL, poderá se ater quase inteiramente ao C / C ++.
Tendo alguma experiência nisso, você pode realmente usar o código C ++ para o seu código "principal", mas é necessário usar o objetivo-C para qualquer coisa específica do iPhone.
Não tente forçar o Objective-C a agir como C ++. A princípio, isso parecerá possível, mas o código resultante realmente não funcionará bem com o Cocoa e você ficará muito confuso com o que está acontecendo. Reserve um tempo para aprender adequadamente, sem C ++, como criar GUIs e aplicativos para iPhone e vincular sua base de C ++.
Você precisa usar o Objetivo C para interagir com a API do cacau, portanto, não há escolha. Obviamente, você pode usar o C ++ tanto quanto quiser nos bastidores (o Objective C ++ facilita isso).
É uma linguagem insana mesmo, mas também é ... divertido de usar quando você está um pouco acostumado. :-)
Não tenho certeza sobre C ++, mas você pode definitivamente codificar aplicativos para iPhone em C #, usando um produto chamado MonoTouch .
Você pode ver este post para uma discussão detalhada sobre o MonoTouch Vs Obj-C: como decidir entre o MonoTouch e o Objective-C?
Estou no processo de portar um aplicativo Android intensivo em computação, escrito em Java para iOS6. Estou fazendo isso portando as partes que não são da interface do usuário do Java para o C ++, escrevendo as partes (mínimas) da interface do usuário no Obj-C e envolvendo a primeira em uma (pequena) interface C usando a técnica C / C ++ padrão, para que ele pode ser acessado a partir do Obj-C, que é afinal um superconjunto de C.
Isso tem sido eficaz até agora, e não encontrei nenhuma dica. Parece ser uma abordagem legítima, já que o Xcode permite criar classes C ++ e classes Obj-C, e alguns dos códigos de amostra oficiais fazem as coisas dessa maneira. Não tive que sair de nenhuma interface oficialmente suportada para fazer isso.
Parece não haver muito a ganhar com a gravação do meu código de interface do usuário restante em C ++, mesmo que fosse possível, tendo em vista a ajuda fornecida pelo construtor de interface no Xcode, então minha resposta seria que você pode usar o C ++ para quase todo o seu aplicativo ou o máximo que achar apropriado / conveniente.
Sim, mas Pensar que você pode programar todo tipo de programa em um único idioma é uma idéia falha, a menos que você esteja escrevendo programas muito simples. O objetivo C é para o cacau, assim como o C # é para o .NET. Use a ferramenta certa para o trabalho certo. Tentar fazer o C ++ interagir com o cacau por meio da escrita de código de ponte e tentar fazer com que o código C ++ se comporte de acordo com os requisitos do cacau não é uma boa ideia, nem esperar C ++ o desempenho do objetivo C é. Você deve tentar o layout do design e a arquitetura do aplicativo, mantendo em vista as habilidades existentes e determinar qual parte deve ser escrita no idioma que será construído em conformidade.
Atualmente, estou escrevendo uma estrutura de Objective-C ++ chamada Objective-X, que torna possível a programação do iPHONE PURE C ++. Você pode fazer assim:
#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());
}
e compile-o usando as opções de linha de comando apropriadas do GCC. Eu já compilei este aplicativo helloworld e ele funcionou como um encanto. ;-) Estará disponível em breve no GoogleCode. Pesquise o Objective-X ou visite http://infotronix.orgfree.com/objectivex aprox. uma semana depois!
URL atualizado (mas aparentemente inativo): http://code.google.com/p/objectivex/
Pode ser um pouco offtopic, mas de qualquer maneira. Você pode programar c ++ diretamente em dispositivos iOS. Confira o aplicativo iOS do CppCode - http://cppcode.info . Eu acredito que ajuda a aprender c e c ++ e objetivo-c mais tarde.