J'aime beaucoup le C++ et pour être honnête, le «super ensemble» Objective-C de C est plus un «super échec». Une application iPhone peut-elle être écrite en C++ pur? Y a-t-il des parties de l'API qui ne sont pas disponibles en C++?Quelles sont les limitations de C++ fonctionnant sur l'iPhone?
Répondre
Vous ne pouvez pas coder purement en C++. Pour un, la classe UIApplicationDelegate que chaque application doit hériter est Objective-C. Cependant, rien ne vous empêche de coder tout ce qui n'est pas lié au framework dans Objective-C++. Vous aurez toujours besoin d'utiliser les appels Objective-C pour UIKit et d'autres frameworks, mais toute la logique de votre application peut être en C++.
De l'Objective-C++ section du guide de programmation Objective-C, ce sont les principales limites:
Objective-C++ n'ajoute pas C++ fonctionnalités aux classes Objective-C, ni -t-il ajouter Objective-C caractéristiques à 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 et de manière interchangeable. Les hiérarchies de classe 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++ d'une classe . En outre, gestion des exceptions multi-langue est non pris en charge. Autrement dit, une exception levée en code Objective-C ne peut pas être interceptée en code C++ et, inversement, une exception levée en code C++ ne peut pas être interceptée en code Objective-C. Pour plus d'informations sur les exceptions dans Objective-C, voir « Gestion des exceptions. »
La partie concernant les exceptions s'applique uniquement au code Mac 32 bits. Dans l'iPhone et le code Mac 64 bits, les deux langues utilisent le même mécanisme pour les exceptions. –
Certaines API Carbon existent dans l'iPhone, vous pourrez donc y accéder depuis une application purement C++. Cela étant dit, cependant, il y a beaucoup d'API très importantes qui sont seulement Objective-C (par exemple, UIKit). Avec quelques bonnes décisions de conception, un shim raisonnable en C/C++ pourrait être écrit pour encapsuler l'Objective-C nécessaire pour faire fonctionner une application iPhone. Une fois cela fait, vous serez en mesure d'écrire votre application avec C++ traditionnel sans problème.
La manière dont Objective-C++ est configuré vous permet d'écrire des appels Objective-C de bonne foi en C++ et mix-in si nécessaire. C'est la voie que j'ai suivie dans les applications iPhone que j'ai développées.
On dirait un très bon moyen de le faire! – mmmmmmmm
Je ne pense pas que vous parvenez à échapper complètement objective-c pour toute application significative, mais vous êtes libre de code principalement en C++. En fait, sio2 (un des moteurs de jeu iphone) est principalement en C++ si vous deviez l'utiliser comme base pour votre application, vous pourriez probablement éviter d'écrire vous même l'objectif-c.
Je voudrais savoir ce que vous n'aimez pas à propos de l'objectif-c? Je viens d'un arrière-plan C++ et trouve Obj-C rafraîchissant et plus OO que C++.
J'aime certaines des idées (comme la dactylographie d'exécution) bien que je l'aime plus comme une extension à une langue statiquement typée. Mais ce qui me semble tout à fait grossier, c'est la langue itswlf. Très moche et les noms de message/méthode pour les méthodes avec des paramètres est une vraie douleur. – mmmmmmmm
C est un langage typé statiquement. Je suggère de jouer avec Objective-C pendant un moment, venant de C++, les parenthèses étaient un peu difficiles à s'habituer, mais maintenant j'adore la syntaxe. Je pense que mon code est beaucoup plus expressif que dans les autres langues que j'ai utilisées. – jessecurry
@jessecurry: Vous avez raison: C est un langage typé statiquement. Ce que je voulais vraiment dire était: je voudrais que ce soit une extension d'un langage statique, orienté objet :-) – mmmmmmmm
Vous avez seulement besoin de faire l'interface graphique dans Obj-C (Obj-C++).
L'intégration de tout autre code C++ avec l'interface ne pose aucun problème.Faites juste attention à supprimer manuellement les pointeurs qui se trouvent à l'intérieur des objets Obj-C
- 1. Quelles sont les limitations de HSQLDB?
- 2. Quelles sont les limitations de Windows CE 4.2?
- 3. Quelles sont les limitations de WPF par rapport à XNA?
- 4. Quelles sont les limitations de Visual Web Developer Express 2010?
- 5. Dans MVC, quelles sont les limitations du contrôleur?
- 6. Quelles sont les limitations pour les noms de signets dans Microsoft Word?
- 7. Quelles sont les principales spécifications C/C++?
- 8. Quelles sont les limitations des types de caractères primitifs dans D?
- 9. Quelles sont les limitations de la méthode PyObject .__ tojava__ de jython?
- 10. Quelles sont les limites du refactoring?
- 11. Quelles sont les limitations de la version d'une application déployée ClickOnce?
- 12. Quelles sont les limitations de Dynamic Language Runtime dans .NET 4.0?
- 13. Quelles sont les limitations que l'on peut faire en termes d'utilisation d'Interwoven Teamsite?
- 14. Quelles sont les polices disponibles sur Android?
- 15. Quelles sont les bibliothèques de graphes de qualité pour C?
- 16. Quelles sont les fonctions variadiques selon C et C++?
- 17. Quelles sont les utilisations acceptables de goto?
- 18. Quelles sont les actions Excel VBA possibles sur les feuilles de calcul ou les classeurs masqués?
- 19. quelles sont les interfaces les plus utilisées en C#?
- 20. Quelles sont les autres bibliothèques équivalentes de C++ qt
- 21. Combien et quelles sont les utilisations de "const" en C++?
- 22. Quelles sont les structures de données dans Objective-C?
- 23. Quelles sont les modifications empilables?
- 24. Quelles sont les informations affichées sur le Plist sur l'iPhone?
- 25. SQL Server Express: Reporting Services .. limitations sur les graphiques?
- 26. Quelles sont les plages de l'accélérateur sur l'iPhone?
- 27. Quelles sont les bonnes ressources pour apprendre sur les génériques?
- 28. Objective-C - Quelles sont les techniques/objets utilisés
- 29. Quelles sont les meilleures ressources pour apprendre l'écriture idiomatique C#?
- 30. Quelles sont les causes possibles de JasperException
Apple VRAIMENT n'est pas amical envers les applications écrites d'une manière qu'ils n'approuvent pas. Ma conjecture est que vous auriez encore plus que les problèmes d'approbation habituels si vous faites cela et essayez d'entrer dans l'App Store. –
C'est idiot, une grande partie des jeux écrits pour iPhone sont déjà principalement en C++, XCode supporte le C++ dès la sortie de la boîte. – jessecurry
@Michael Kohne: Si je pouvais voter contre votre commentaire, je le ferais. Complètement faux. –