Qu'est-ce que Objective C ++? [fermé]


165

Qu'est-ce que Objective C ++ et puis-je utiliser ce langage dans Xcode?



La raison proche «difficile de dire ce qui est demandé» était une raison plus ancienne pour fermer une question. De nos jours, la raison serait «trop large» car le PO est en réalité deux questions différentes. Tout d'abord, expliquer Objective C ++ prendrait plusieurs pages à traiter, et deuxièmement, le codage pour iOS est spécifiquement fait à l'aide d'Objective C et XCode est l'EDI par défaut pour le développement iOS.Même si les deux sont liés, c'est une question trop grande en soi. Ces types de questions doivent être déplacés vers le site de documentation.
Kelly

1
@ DaveVoyles-MSFT: J'ai du mal à prendre quelqu'un au sérieux qui pense que voter contre une question et le meurtre de masse mécanisé, industrialisé, organisé et systématique de plus de 6 millions de personnes sont la même chose.
Jörg W Mittag

3
@ JörgWMittag Je suis désolé, mais votre réponse a été fermée comme n'étant pas une vraie question par les modérateurs de Stack Overflow.
Dave Voyles

1
@ DaveVoyles-MSFT: La raison du vote étroit "pas une vraie question" a été supprimée il y a des années.
Jörg W Mittag

Réponses:


158

Objective-C ++ est simplement du code source qui mélange des classes Objective-C et des classes C ++ (deux entités totalement indépendantes). Votre code C ++ fonctionnera, comme avant, et l'exécutable résultant sera lié au runtime Objective-C, donc vos classes Objective-C fonctionneront également. Vous pouvez certainement l'utiliser dans Xcode - nommez vos fichiers avec l' .mmextension.

En outre, vous pouvez lire Apple (malheureusement supprimé, mais archivé) la documentation sur Objective-C ++ .


2
la section de limitation de ce lien le dit et vaut la peine d'être citée. Objective-C ++ n'ajoute pas de fonctionnalités C ++ aux classes Objective-C, ni n'ajoute de fonctionnalités Objective-C aux classes C ++. Par exemple, vous ne pouvez pas utiliser la syntaxe Objective-C pour appeler un objet C ++, vous ne pouvez pas ajouter de constructeurs ou de destructeurs à un objet Objective-C et vous ne pouvez pas utiliser les mots-clés this et self de manière interchangeable. Les hiérarchies de classes sont séparées; une classe C ++ ne peut pas hériter d'une classe Objective-C et une classe Objective-C ne peut pas hériter d'une classe C ++. En outre, la gestion des exceptions en plusieurs langues ne sont pas pris en charge
GSS

33

Objective-C ++ est Objective-C (probablement avec Cocoa Framework) avec la possibilité de se lier avec du code C ++ (classes probables).

Oui, vous pouvez utiliser cette langue dans Xcode pour développer pour Mac OS X, iPhone / iPodTouch, iPad. Il fonctionne très bien.

Vous n'avez rien à faire de bizarre dans votre projet pour utiliser Objective-C ++. Nommez simplement vos fichiers Objective-C avec l'extension .mm (au lieu de .m ) et vous êtes à partir.

C'est mon architecture préférée: développer la bibliothèque de classes de base de mon jeu / application en C ++ afin que je puisse la réutiliser sur d'autres plates-formes (Windows, Linux) et utiliser Cocoa uniquement pour les éléments spécifiques de l' interface utilisateur iPhone / iPad .


10
Il ne s'agit pas de lier avec C ++ - vouliez-vous dire mélanger ?
Georg Fritzsche

6

Si vous souhaitez utiliser Objective-c ++ mais ne souhaitez pas nommer vos fichiers, .mmconsultez ma réponse à une question similaire .

Sans changer de .m en .mm ou quoi que ce soit de ce genre, si vous cliquez sur votre projet, cliquez sur tagets-> build settings descendez jusqu'à "LLVM GCC 4.2 - Languages" (le nouveau xcode dit "Apple LLVM compiler 4.2" ) vous verra Compile Sources As changer cette valeur en Objective-C ++ ;


4
bien que vous puissiez le faire, ce n'est pas aussi portable et peut être déroutant pour quelqu'un qui essaie de maintenir votre code où .s est un en-tête et .r sont des fichiers d'implémentation.
Grady Player

d'où tirez-vous .s et .r? Vous pouvez utiliser .m standard pour le fichier de méthode et .h pour l'en-tête, comme si vous utilisiez Objective-c.
John Riselvato

Je dis simplement que .m signifie quelque chose, et le faire signifier autre chose n'est pas standard.
Grady Player

En Objective-c pour utiliser le vecteur std (un std c ++), j'aurais besoin d'Objective-c ++ activé. Cela n'aurait aucun sens pour moi de créer une extension de type de fichier différente simplement pour utiliser des vecteurs dans mon code objective-c.
John Riselvato

13
absolument ce serait, il utiliserait 'cout' ou tout ce qui ne fait pas partie de C.
Grady Player
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.