Domanda

Ho imparato Objective-C e Cocoa attraverso il mio libro Hillegass e mi viene in mente che potrei stare meglio usando Objective-C ++. Objective-C sembra la scelta chiara per lo sviluppo di interfacce utente ma ho un background C ++ molto forte e mi piacerebbe sviluppare back-end di applicazioni in C ++ e utilizzare Objective-C ++ per fare l'integrazione con l'interfaccia utente. Ma mi chiedo se Apple continuerà a sviluppare Objective-C ++ o diventerà un vicolo cieco.

Qualcuno sta usando Objective-C ++?

È stato utile?

Soluzione

Disclaimer: non lavoro né parlo per Apple, quindi questa è la mia opinione:

Non posso parlare per i principali negozi di sviluppo, ma nel mio piccolo gruppo abbiamo usato Objective-C ++ sia per integrare le librerie C ++, sia mentre proponete di scrivere backend in C ++. Come menziona @alxp, cose come la gestione delle eccezioni oltre il limite del linguaggio sono dolorose, ma con una piccola pianificazione, la maggior parte di questi dolori può essere evitata. Per gli sviluppatori C ++ esperti, i guadagni possono valere la pena.

In termini di supporto, penso che si possa presumere che il supporto nel suo stato attuale non scomparirà presto. Fa parte del codice GCC e il Clang toolchain (il prossimo toolchain del compilatore di Apple) supporta pienamente Objective-C ++. D'altra parte, non esiste alcuna garanzia ufficiale che Apple continuerà a sviluppare l'integrazione, ad esempio riparando alcune verruche.

Per i progetti attuali, direi che se l'utilizzo di Objective-C ++ offre vantaggi, è sicuro fare affidamento sul supporto esistente e dovresti usarlo.

Altri suggerimenti

Le uniche volte che ho usato ObjC ++ è stato il porting delle librerie per renderle accessibili dal mio codice ObjC. Gli scontri tra il modo in cui ObjC ++ e ObjC gestiscono cose come le eccezioni, la creazione e la distruzione di classi hanno reso il mal di testa troppo complicato per destreggiarsi tra le due lingue in un unico progetto.

Non credo che il supporto andrà via presto come è successo con Cocoa / Java poiché fa parte del GCC in modo piuttosto solido, e il fatto che Objective-C ++ si compili in C ++ direttamente nello stesso modo in cui Objective-C può compilare fino al semplice C, ma non trovo ancora un ambiente molto piacevole in cui creare software rispetto a Objective-C e poter utilizzare comodamente i framework forniti da OS X.

È probabile che Objective-C ++ rimanga supportato finché Objective-C lo è. Obj-C ++ è un obiettivo di base per clang , che dovrebbe eventualmente sostituire gcc come compilatore preferito di Apple. È probabile che l'utilizzo aumenti quando le applicazioni Carbon vengono spostate ai front-end Cocoa.

Naturalmente, la parola "probabile" appare due volte sopra perché Apple è così incredibilmente imprevedibile. : -)

Sospetto che Apple continuerà a supportare Objective C ++ per un po ', poiché non vedo alcun significativo sforzo ricorrente richiesto da Apple per mantenere Objective C ++ mentre Apple aggiorna Cocoa e Objective C ++.

L'altro giorno sono rimasto sorpreso quando ho tentato di refactoring del codice Objective-C che si trovava all'interno di un file Objective-C ++ usando il supporto del refactoring di Xcode. Anche se le voci di menu sono abilitate, ho ottenuto il codice " Can't refactor Objective-C ++. Xcode può solo refactoring il codice C e Objective-C. & Quot; messaggio di errore. Quindi, mentre la compilazione di Objective-C ++ continuerà a funzionare indefinitamente, sospetto che Objective-C ++ sarà un cittadino di seconda classe all'interno di Xcode.

L'ho rimosso da tutto il mio codice. Nessun file .mm.

Ma hai bisogno di file .cpp per parlare con i file .m. La soluzione è un file .c / .h che mantiene intatta la barriera emato-encefalica.

Il C ++ con obiettivo-C di solito è solo troppo bagaglio.

Objective-C è in realtà solo un gruppo di codice C che emula oggetti nel linguaggio C e utilizza ancora il compilatore C inclusi i file di intestazione Objective-C. L'utilizzo di Objective-C ++ utilizza il compilatore C ++ e include le intestazioni Objective-C come codice C, poiché C ++ eseguirà il codice C. Objective-C ++ è essenzialmente solo C, C ++ e Objective-C (che in realtà è solo C)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top