O que é Objetivo C ++? [fechadas]

164

O que é o Objective C ++ e posso usar esta linguagem no Xcode?

Saurabh
fonte
O motivo mais próximo 'difícil de dizer o que está sendo perguntado' era um motivo antigo para encerrar uma pergunta. Atualmente, o motivo seria "amplo demais", pois o OP é realmente duas perguntas diferentes. Primeiro, explicar o Objective C ++ levaria várias páginas para endereçar, e segundo, a codificação para iOS é feita especificamente usando o Objective C e o XCode é o IDE padrão para o desenvolvimento do iOS, mesmo que os dois estejam relacionados, é uma pergunta muito grande. Esse tipo de pergunta deve ser movido para o site da documentação.
31578 Kelly S. French
1
@ DaveVoyles-MSFT: Estou tendo dificuldades para levar a sério alguém que acha que votar uma pergunta e o assassinato em massa mecanizado, industrializado, organizado e sistemático de mais de 6 milhões de pessoas são a mesma coisa.
Jörg W Mittag 03/02
3
@ JörgWMittag Desculpe, mas sua resposta foi encerrada como uma pergunta real pelos moderadores do Stack Overflow.
Dave Voyles
1
@ DaveVoyles-MSFT: O motivo do voto próximo "não é uma pergunta real" foi removido anos atrás.
Jörg W Mittag

Respostas:

157

O Objective-C ++ é simplesmente um código-fonte que combina as classes Objective-C e C ++ (duas entidades totalmente não relacionadas). Seu código C ++ funcionará, como antes, e o executável resultante será vinculado ao tempo de execução do Objective-C, portanto suas classes de Objective-C também funcionarão. Você pode definitivamente usá-lo no Xcode - nomeie seus arquivos com a .mmextensão.

Além disso, você pode ler a documentação da Apple (infelizmente excluída, mas arquivada) no Objective-C ++ .

Doches
fonte
2
a seção de limitação nesse link diz isso e vale a pena citar o Objective-C ++ não adiciona recursos de C ++ às classes de Objective-C, nem adiciona recursos de Objective-C às classes de C ++. Por exemplo, você não pode usar a sintaxe Objective-C para chamar um objeto C ++, não pode adicionar construtores ou destruidores a um objeto Objective-C e não pode usar as palavras-chave this e self interchangeably. As hierarquias de classe são separadas; uma classe C ++ não pode herdar de uma classe Objective-C e uma classe Objective-C não pode herdar de uma classe C ++. Além disso, o tratamento de exceção multi-idioma não é suportado
ASGs
33

Objective-C ++ é Objective-C (provavelmente com Cocoa Framework) com a capacidade de vincular-se ao código C ++ (classes prováveis).

Sim, você pode usar esse idioma no Xcode para desenvolver para Mac OS X, iPhone / iPodTouch, iPad. Funciona muito bem.

Você não precisa fazer nada de estranho no seu projeto para usar o Objective-C ++. Apenas nomeie seus arquivos Objective-C com a extensão .mm (em vez de .m ) e você estará pronto .

É minha arquitetura favorita: desenvolver uma biblioteca de classes base do meu jogo / aplicativo em C ++ para que eu possa reutilizá-lo em outras plataformas (Windows, Linux) e usar o Cocoa apenas para itens específicos da interface do usuário do iPhone / iPad .

Pablo Santa Cruz
fonte
10
Não se trata de vincular com C ++ - você quis dizer misturar ?
Georg Fritzsche
6

Se você deseja usar o Objective-c ++, mas não deseja nomear seus arquivos, .mmconfira minha resposta a uma pergunta semelhante .

Sem alterar nenhum .m para .mm ou algo assim, se você clicar no seu projeto, clique em tags-> configurações de compilação até "LLVM GCC 4.2 - Idiomas" (o novo xcode diz "Apple LLVM compiler 4.2" ) verá fontes de compilação à medida que altere esse valor para Objective-C ++ ;

John Riselvato
fonte
4
enquanto você pode fazer isso, não é tão portátil e pode ser confuso para alguém que está tentando manter seu código em que .s é um cabeçalho e .r são arquivos de implementação.
Grady Player
de onde você está puxando .s e .r? Você pode usar .m padrão para arquivo de método e .h para cabeçalho, como se você usasse Objective-c simples.
John Riselvato
Estou apenas dizendo que .m significa alguma coisa, e fazê-la significar que outra coisa não é padrão.
Grady Player
No Objective-c para usar o vetor std (um c ++ std), eu precisaria do Objective-c ++ ativado. Não faria sentido criar uma extensão de tipo de arquivo diferente apenas para usar vetores dentro do meu código objetivo-c.
John Riselvato
13
absolutamente que seria, que seria usar 'cout' ou qualquer coisa que não é uma parte de C.
Grady Jogador