Quelles sont les particularités / surprises avec l'utilisation de fichiers .mm dans Objective-C?

StackOverflow https://stackoverflow.com/questions/823285

  •  05-07-2019
  •  | 
  •  

Question

Je souhaite utiliser certaines collections STL C ++ dans mon application iPhone Objective-C. Apparemment, cela est possible en donnant aux fichiers l’extension ".mm". . Quelles sont les bizarreries / surprises associées à cela?

Je veux utiliser les conteneurs de base que je connais bien (vecteur, file d'attente, ensemble, ...)

Salut!

Était-ce utile?

La solution

Voir Utiliser C ++ avec Objective-C pour une liste détaillée de ce que vous pouvez et ne pouvez pas faire. Vous pouvez faire la plupart des choses que vous attendez. Vous ne pouvez tout simplement pas faire comme si une classe C ++ héritait d'une classe Objective-C ou inversement, vous ne pouvez pas mélanger des exceptions C ++ avec des exceptions Objective-C et C ++ introduit plusieurs nouveaux mots-clés non présents dans Objective-C.

Autres conseils

La particularité majeure d'Objective-C ++ est que si vous ne passez pas -fobjc-call-cxx-cdtors à g ++, il n'appellera pas le constructeur et le destructeur de variables d'instance C ++ dans des objets ObjC. N'oubliez donc pas d'activer cette option et vous devriez être bon.

Les fichiers seront compilés avec le compilateur Objective-C ++. Ainsi, les choses se comporteront davantage comme g ++ que gcc, mais puisque c'est ce que vous voulez, cela ne compte probablement pas comme une surprise. En ce qui concerne Objective-C, je ne suis au courant d'aucun piège et j'ai travaillé sur plusieurs grands projets qui ont largement utilisé Objective-C ++. N'oubliez pas que les mots réservés Objective-C sont également réservés dans Objective-C ++, de sorte que vous pouvez parfois rencontrer des problèmes avec les bibliothèques C ++ tierces (par exemple, s'ils utilisent "id" comme paramètre dans une interface publique). .

Vous seriez surpris de voir à quel point cela fonctionne. Je n'ai pas vraiment eu de problèmes à mélanger Obj-C et C ++ dans un fichier .mm.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top