Quais são algumas peculiaridades / surpreende com Usando .mm arquivos em Objective-C?

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

  •  05-07-2019
  •  | 
  •  

Pergunta

Eu quero usar alguns ++ coleções STL C em meu aplicativo Objective-C iPhone. Aparentemente, isso é possível, dando arquivos a extensão ".mm". O que são algumas das peculiaridades / surpresas associado a este?

Eu quero usar os recipientes básicos que eu estou familiarizado com (vetor, fila, set, ...)

Felicidades!

Foi útil?

Solução

Usando C ++ Com Objective-C para uma lista detalhada do que você pode e não pode fazer. Você pode fazer a maioria das coisas que você esperaria. Você simplesmente não pode fazer coisas como ter uma herdar a classe C ++ de uma classe Objective-C ou vice-versa, você não pode misturar exceções C ++ com exceções Objective-C e introduz C ++ várias novas palavras-chave não está presente em Objective-C.

Outras dicas

A principal peculiaridade de Objective-C ++ é que, se você não passar para g ++ CXX-cdtors -fobjc-call-, não vai chamar o construtor e destruidor de variáveis ??de instância C ++ no de ObjC objetos. Então lembre-se de transformar essa opção e você deve ser bom.

Os arquivos serão compilados com o compilador Objective-C ++, então as coisas vão se comportar mais como g ++ de gcc, mas desde que isso é o que você quer que ele provavelmente não conta como uma surpresa. Do lado do Objective-C, eu não estou ciente de qualquer armadilhas, e eu tenho trabalhado em vários projetos grandes que fizeram significativa usado de Objective-C ++. Basta ter em mente que Objective-C reservados palavras são reservadas em Objective-C ++, bem, então você pode ocasionalmente ter problemas com bibliotecas de terceiros C ++ (por exemplo, se eles usam "id" como um parâmetro em uma interface pública).

Você ficaria surpreso com o quão bem ele funciona. Eu realmente não tenho entrado em quaisquer problemas miscigenação Obj-C e C ++ em um arquivo .mm.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top