Sono tutto per la diversità linguistica, ma l'obiettivo C è folle. Quindi sono curioso: è possibile codificare le app per iPhone con C ++ mentre si utilizza l'API Cocoa, ecc.?
Sono tutto per la diversità linguistica, ma l'obiettivo C è folle. Quindi sono curioso: è possibile codificare le app per iPhone con C ++ mentre si utilizza l'API Cocoa, ecc.?
Risposte:
Risposta breve, sì, una specie di. Puoi utilizzare Objective-C ++, che puoi leggere su Apple Developer Connection.
Se conosci già C ++, imparare Objective-C sarebbe piuttosto semplice, se decidessi di provarlo. Ulteriori informazioni su tale argomento sono disponibili anche presso l'ADC.
Sebbene inizialmente Objective-C sembri "pazzo", ti incoraggio a seguirlo. Una volta che hai un momento "a-ha", improvvisamente tutto inizia a dare un senso. Per me ci sono volute circa 2 settimane di concentrazione mirata di Objective-C per capire veramente i framework di Cocoa, il linguaggio e come tutto si adatta. Ma una volta "capito", è stato molto eccitante.
Sembra un cliché, ma è vero. Attaccalo.
Naturalmente, se stai introducendo librerie C ++ o codice C ++ esistente, puoi usare quei moduli con Objective-C / Objective-C ++.
Uso Objective-C per dare uno schiaffo all'interfaccia utente.
Ma il coraggio del codice è ancora scritto in C ++.
Questo è lo scopo principale di Objective-C dell'interfaccia utente e della gestione degli eventi.
E funziona benissimo a tale scopo.
Mi piace comunque C ++ come backend per il codice (ma questo è principalmente perché mi piace C ++) puoi usare facilmente Objective-C anche per il backend dell'applicazione.
#include <XXX>
proprio come i file C / C ++.
Prima di tutto, dire che Objective-C è "folle" è divertente - Ho il libro di Bjarne Stroustrup C ++ seduto al mio fianco che arriva a 1020 pagine. Il PDF di Apple su Objective-C è 141.
Se vuoi usare UIKit, sarà molto, molto difficile per te fare qualsiasi cosa in C ++. Qualsiasi app per iPhone seria che sia conforme all'interfaccia utente di Apple avrà bisogno che le sue parti dell'interfaccia utente siano scritte in Objective-C. Solo se stai scrivendo un gioco OpenGL puoi rimanere quasi interamente in C / C ++.
Avendo una certa esperienza di questo, puoi davvero usare il codice C ++ per il tuo codice "core", ma devi usare object-C per qualsiasi cosa specifica di iPhone.
Non cercare di forzare Objective-C ad agire come C ++. All'inizio ti sembrerà possibile, ma il codice risultante in realtà non funzionerà bene con Cocoa e sarai molto confuso su ciò che sta succedendo. Prenditi il tempo per imparare correttamente, senza C ++ in giro, come costruire GUI e applicazioni per iPhone, quindi collegare nella tua base C ++.
Devi usare l'Obiettivo C per interfacciarti con l'API Cocoa, quindi non c'è scelta. Ovviamente, puoi usare tutto il C ++ che vuoi dietro le quinte (Objective C ++ lo rende facile).
È davvero un linguaggio folle, ma è anche ... divertente da usare una volta che ci sei abituato. :-)
Non sono sicuro del C ++, ma puoi sicuramente codificare le applicazioni iPhone in C #, usando un prodotto chiamato MonoTouch .
Puoi vedere questo post per una discussione dettagliata su MonoTouch Vs Obj-C: Come decidere tra MonoTouch e Objective-C?
Sto eseguendo il porting di un'app Android ad alta intensità di calcolo scritta in Java su iOS6. Sto facendo questo porting delle parti non UI da Java a C ++, scrivendo le parti (minime) dell'interfaccia utente in Obj-C e avvolgendo le prime in una (piccola) interfaccia C usando la tecnica standard C / C ++, in modo che vi si può accedere da Obj-C, che dopo tutto è un superset di C.
Finora è stato efficace e non ho riscontrato alcun problema. Sembra essere un approccio legittimo, dal momento che Xcode ti consente di creare classi C ++ e Obj-C e alcuni dei codici di esempio ufficiali fanno le cose in questo modo. Per fare questo non ho dovuto uscire da nessuna interfaccia supportata ufficialmente.
Non sembra che ci sia molto da guadagnare dalla scrittura del mio codice UI rimanente in C ++ anche se fosse possibile, in vista dell'aiuto che ti è stato dato dal costruttore di interfacce in Xcode, quindi la mia risposta sarebbe che puoi usare C ++ per quasi tutte le tue app o quanto ritieni appropriate / convenienti.
Sì, ma pensare di poter programmare ogni tipo di programma in una sola lingua è un'idea imperfetta a meno che tu non stia scrivendo programmi molto semplici. L'obiettivo C è per Cocoa come C # è per .NET, utilizzare lo strumento giusto per il lavoro giusto, cercare di far interagire C ++ con Cocoa scrivendo il codice ponte e provare a far comportare il codice C ++ secondo i requisiti Cocoa non è una buona idea né aspettarsi C ++ la prestazione dall'obiettivo C è. Dovresti provare a progettare il layout e l'architettura dell'app tenendo in considerazione le competenze esistenti e determinare quale parte dovrebbe essere scritta in quale lingua quindi costruire di conseguenza.
Attualmente sto scrivendo un framework Objective-C ++ chiamato Objective-X, che rende possibile la PROGRAMMAZIONE iPHONE PURE C ++. Puoi fare così:
#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 compilarlo usando le opzioni appropriate della riga di comando di GCC. Ho già compilato questa app di helloworld e w0rkX0rz come un fascino. ;-) Sarà presto disponibile su GoogleCode. Cerca Objective-X o visita http://infotronix.orgfree.com/objectivex circa. una settimana dopo!
URL aggiornato (ma apparentemente inattivo): http://code.google.com/p/objectivex/
Potrebbe essere un po 'offtopico, ma comunque. Puoi programmare c ++ direttamente sui dispositivi iOS. Scopri l'app ios CppCode - http://cppcode.info . Credo che aiuti a imparare c e c ++ e object-c in seguito.