2012-06-03 2 views
0

désolé pour mon anglais n'est pas bon. J'essaie d'utiliser du code C++ pur dans mon projet iOS mais j'ai les prochains problèmes:en utilisant C++ (.cpp) avec objectif-c (.m)

Je crée un nouveau fichier product.cpp + product.h, je crée ses propres méthodes et attributs, et je veux utilisez cette classe dans mon viewcontroller.m mais ne courez pas, je change l'extensión du viewcontroller.m en viewcontroller.mm mais ne fonctionne pas mais si je change l'extension de appDelegate.m en appDelegate.mm c'est ok et run.

Ma question est que je dois toujours changer les fichiers mi en .mm si je veux utiliser .cpp?

:/

+0

Je pense que la réponse est oui, puisque .mm signifie que vous écrivez en Objective-C++ qui est techniquement un langage qui lui est propre. – Hassan

+0

Découvrez cette question similaire et voir si cela aide: http://stackoverflow.com/questions/3698459/objective-c-and-cpp-files-in-xcode – Ben

Répondre

0

En général oui, une extension de fichier de .mm dit Xcode d'invoquer le compilateur Objective-C++, alors que .m indique au compilateur d'invoquer le compilateur Objective-C. Vous pouvez définir le type de compilateur par fichier en utilisant le panneau des paramètres de fichier sur la droite (afin de forcer la compilation Objective-C++ sur un fichier .m), mais cela n'est pas intuitif et risque de perturber les futurs responsables . Si vous êtes prêt à prendre en compte les conseils d'un utilisateur C++ et Objective-C de longue date, j'ai beaucoup mélangé les deux et au fil du temps c'est plus difficile que ça en vaut la peine. Il vaut mieux s'en tenir uniquement à Objective-C, et si vous avez une bibliothèque C++ que vous avez juste besoin d'intégrer, alors faites un C wrapper pour cela.

Auparavant, l'analyseur Xcode fonctionnait uniquement sur des fichiers Objective-C, pas sur Objective-C++, ce qui faisait perdre beaucoup de valeur à l'outil en écrivant des fichiers Objective-C++. Je ne suis pas sûr si Apple l'a changé dans l'année ou ainsi depuis que j'ai écrit n'importe quel Objective-C++ mais j'imagine qu'il n'y a pas beaucoup de raison pour eux. Stick avec Objective-C si vous le pouvez parce que l'analyseur est extrêmement utile.