¿Cuáles son algunas peculiaridades / sorpresas con el uso de archivos .mm en Objective-C?

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

  •  05-07-2019
  •  | 
  •  

Pregunta

Quiero usar algunas colecciones C ++ STL en mi aplicación de iPhone Objective-C. Aparentemente, esto es posible dando a los archivos la extensión ".mm" . ¿Cuáles son algunas de las peculiaridades / sorpresas asociadas con esto?

Quiero usar los contenedores básicos con los que estoy familiarizado (vector, queue, set, ...)

¡Salud!

¿Fue útil?

Solución

Consulte Uso de C ++ con Objective-C para obtener una lista detallada de lo que puedes y no puedes hacer. Puede hacer la mayoría de las cosas que esperaría. Simplemente no puede hacer cosas como tener una clase de C ++ heredada de una clase de Objective-C o viceversa, no puede mezclar excepciones de C ++ con excepciones de Objective-C, y C ++ introduce varias palabras clave nuevas que no están presentes en Objective-C.

Otros consejos

La peculiaridad principal de Objective-C ++ es que si no pasa -fobjc-call-cxx-cdtors a g ++, no llamará al constructor y destructor de las variables de instancia de C ++ de los objetos ObjC. Así que recuerde activar esa opción y debería ser bueno.

Los archivos se compilarán con el compilador Objective-C ++, por lo que las cosas se comportarán más como g ++ que gcc, pero como eso es lo que quieres, probablemente no sea una sorpresa. Desde el lado de Objective-C, no tengo conocimiento de ningún problema, y ??he trabajado en varios proyectos grandes que hicieron un uso significativo de Objective-C ++. Solo tenga en cuenta que las palabras reservadas de Objective-C también están reservadas en Objective-C ++, por lo que ocasionalmente puede tener problemas con las bibliotecas de C ++ de terceros (por ejemplo, si usan '' id '' como parámetro en una interfaz pública) .

Te sorprendería lo bien que funciona. Realmente no he tenido ningún problema al mezclar Obj-C y C ++ en un archivo .mm.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top