Pergunta

Fui aprendendo Objective-C e Cocoa trabalhando meu caminho através da Hillegass livro e ocorre-me que eu poderia ser melhor fora de usar Objective-C ++. Objective-C parece ser a escolha clara para o desenvolvimento de interfaces de usuário, mas eu tenho um fundo muito forte C ++ e gostaria de desenvolver back-ends de aplicativos em C ++ e usar Objective-C ++ para fazer a integração UI. Mas eu me pergunto se a Apple vai continuar a desenvolver Objective-C ++ ou se tornará um beco sem saída.

Há alguém lá fora usando Objective-C ++?

Foi útil?

Solução

Disclaimer: eu não trabalho ou falar para a Apple, por isso esta é minha opinião:

Eu não posso falar para as principais lojas dev, mas no meu pequeno grupo, nós usamos Objective-C ++, tanto para a integração de bibliotecas C ++ e, como você propõe para escrever backends em C ++. Como @alxp menciona, coisas como tratamento de exceção através do limite de linguagem são dolorosas, mas com um pouco de planejamento, a maioria dessas dores podem ser evitadas. Para devs experientes C ++, os ganhos podem ser bem vale a dor.

Em termos de apoio, eu acho que você pode assumir que o apoio em seu estado atual não vai desaparecer tão cedo. É parte da base de código GCC eo Clang toolchain (próxima toolchain compilador da Apple) apoia plenamente Objective-C ++. Por outro lado, não há qualquer garantia oficial de que a Apple vai continuar a desenvolver a algumas das verrugas, por exemplo. Fixação de integração

Para projetos atuais, eu diria que, se utilizando Objective-C ++ fornece benefício, é seguro contar com o apoio existente e você deve usá-lo.

Outras dicas

As únicas vezes que eu usei ObjC ++ foi a bibliotecas de portas para torná-los acessíveis a partir de meu código ObjC. Os confrontos entre como ObjC ++ e ObjC lidar com coisas como exceções e criação da classe e destruição apenas fez muito de uma dor de cabeça para conciliar as duas línguas em um projeto.

Eu não acho que o apoio vai embora assim que aconteceu com Cacau / Java, uma vez que é muito solidamente parte do GCC, eo fato de que Objective-C ++ compila até C reta ++, da mesma forma que Objective-C pode compilar até reta C, mas eu ainda não encontrá-lo um ambiente muito agradável para software de construção em comparação com Objective-C e ser capaz de confortavelmente utilizar plenamente as estruturas oS X-fornecidos.

Objective-C ++ é provável que se mantenha suporte desde que Objective-C é. Obj-C ++ é um objetivo básico para clang , que é esperado para eventualmente substituir o gcc como compilador preferido da Apple. O uso é provável que aumente como aplicações de carbono são movidos para extremidades dianteiras de cacau.

É claro que a palavra “provável” aparece duas vezes acima porque a Apple é tão empolgante imprevisível. : -)

Eu suspeito que a Apple vai continuar a apoiar Objective C ++ por um tempo, como eu não vejo qualquer esforço recorrentes significativa exigida pela Apple para manter Objective C ++ como a Apple atualizações Cacau e Objective C ++.

No outro dia eu estava surpreso quando tentei refatorar algum código Objective-C que estava dentro de um arquivo de Objective-C ++ usando o suporte a refatoração do Xcode. Mesmo que os itens do menu estão habilitados eu tenho o "Não é possível refatorar código Objective-C ++. Xcode só pode refatorar C e código de Objective-C." mensagem de erro. Assim, enquanto a compilação de Objective-C ++ continuará funcionando indefinidamente suspeito Objective-C ++ será um cidadão de segunda classe dentro Xcode.

Eu o tirei de todo o meu código. Nenhum arquivo .mm.

Mas você precisa .cpp arquivos para falar com arquivos .m. A solução é um arquivo .c / .h que mantém a barreira hematoencefálica intacta.

C ++ com Objective-C é geralmente apenas demasiada bagagem.

Objective-C é realmente apenas um monte de código C que emula objetos na linguagem C, e ele ainda usa o compilador C, incluindo os arquivos de cabeçalho Objective-C. Usando Objectivo-C ++ usa o compilador C ++ e incluem os cabeçalhos Objective-C como o código C, C ++, uma vez irá executar código C. Objective-C ++ é essencialmente apenas C, C ++ e Objective-C (que é realmente apenas C)

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