Cos'è Objective C ++? [chiuso]


164

Che cos'è Objective C ++ e posso usare questo linguaggio in Xcode?



Il motivo stretto "difficile dire cosa viene chiesto" era un motivo più antico per chiudere una domanda. In questi giorni il motivo sarebbe "troppo ampio" in quanto il PO è in realtà due domande diverse. Innanzitutto, spiegare Objective C ++ richiederebbe diverse pagine da affrontare, e in secondo luogo, la codifica per iOS viene eseguita in modo specifico utilizzando Objective C e XCode è l'IDE predefinito per lo sviluppo di iOS, quindi anche se i due sono correlati è una domanda troppo grande. Questo tipo di domande dovrebbe essere spostato nel sito della documentazione.
Kelly S. francese,

1
@ DaveVoyles-MSFT: non riesco a prendere sul serio qualcuno che pensa che il downvoting di una domanda e l'assassinio di massa meccanizzato, industrializzato, organizzato e sistematico di oltre 6 milioni di persone siano la stessa cosa.
Jörg W Mittag,

3
@ JörgWMittag Mi dispiace, ma la tua risposta è stata chiusa come non una vera domanda dai moderatori di Stack Overflow.
Dave Voyles,

1
@ DaveVoyles-MSFT: il motivo del voto stretto "non è una vera domanda" è stato rimosso anni fa.
Jörg W Mittag,

Risposte:


157

Objective-C ++ è semplicemente il codice sorgente che mescola le classi Objective-C e le classi C ++ (due entità completamente non correlate). Il codice C ++ funzionerà, proprio come prima, e l'eseguibile risultante sarà collegato con il runtime Objective-C, quindi funzioneranno anche le classi Objective-C. Puoi sicuramente usarlo in Xcode - dai un nome ai tuoi file con l' .mmestensione.

Inoltre, potresti voler leggere la documentazione di Apple (purtroppo cancellata, ma archiviata) su Objective-C ++ .


2
la sezione di limitazione in quel link dice questo e vale la pena citare Objective-C ++ non aggiunge funzionalità C ++ alle classi Objective-C, né aggiunge funzionalità Objective-C alle classi C ++. Ad esempio, non è possibile utilizzare la sintassi Objective-C per chiamare un oggetto C ++, non è possibile aggiungere costruttori o distruttori a un oggetto Objective-C e non è possibile utilizzare le parole chiave in questo modo e in modo intercambiabile. Le gerarchie di classi sono separate; una classe C ++ non può ereditare da una classe Objective-C e una classe Objective-C non può ereditare da una classe C ++. Inoltre, la gestione delle eccezioni multilingue non è supportata
applica il

33

Objective-C ++ è Objective-C (probabilmente con Cocoa Framework) con la possibilità di collegarsi con il codice C ++ (classi probabili).

Sì, puoi usare questa lingua in Xcode per sviluppare per Mac OS X, iPhone / iPodTouch, iPad. Funziona molto bene

Non devi fare nulla di strano nel tuo progetto per usare Objective-C ++. Basta nominare i tuoi file Objective-C con l'estensione .mm (anziché .m ) e sei a posto.

È la mia architettura preferita: sviluppare una libreria di classi base del mio gioco / applicazione in C ++ in modo da poterlo riutilizzare su altre piattaforme (Windows, Linux) e usare Cocoa solo per cose specifiche dell'interfaccia utente di iPhone / iPad .


10
Non si trattava di collegarsi con C ++ - intendevi missare ?
Georg Fritzsche,

6

Se vuoi usare Objective-c ++ ma non vuoi dare un nome ai tuoi file, controlla la .mmmia risposta a una domanda simile .

Senza cambiare alcun .m in .mm o qualcosa del genere, se fai clic sul tuo progetto, fai clic su tag-> crea impostazioni scendi fino a "LLVM GCC 4.2 - Lingue" (il nuovo xcode dice "compilatore Apple LLVM 4.2" ) vedrà compilare le fonti come modificare quel valore in Objective-C ++ ;


4
mentre puoi farlo, non è portatile e può essere fonte di confusione per qualcuno che sta cercando di mantenere il tuo codice dove .s è un'intestazione e .r sono file di implementazione.
Grady Player

da dove stai tirando .s e .r? È possibile utilizzare .m standard per il file del metodo e .h per l'intestazione proprio come se si utilizzasse il semplice Objective-c.
John Riselvato,

Sto solo dicendo che .m significa qualcosa e che significhi qualcos'altro non è standard.
Grady Player

In Objective-c per usare std vector (un c ++ std), avrei bisogno che Objective-c ++ fosse attivato. Non avrebbe senso per me creare una diversa estensione del tipo di file solo per usare i vettori all'interno del mio codice obiettivo-c.
John Riselvato,

13
assolutamente, userebbe "cout" o qualsiasi cosa che non faccia parte di C.
Grady Player
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.