Primeiro, um pouco de fundo. Sou desenvolvedor .Net (C #) e tenho mais de 5 anos de experiência em aplicativos para desenvolvimento web e desktop. Há algum tempo, estou querendo analisar o desenvolvimento do iPhone, mas por um motivo ou outro sempre foi desviado. Finalmente tenho um projeto em potencial no horizonte e agora estou a todo vapor aprendendo essas coisas.
Minha pergunta é a seguinte: eu não faço programação em C / C ++ desde os meus dias de escolaridade, moro em terras gerenciadas desde então. Quanto conhecimento é necessário para ter sucesso como desenvolvedor iOS? Obviamente, o gerenciamento de memória é algo que eu vou ter que estar consciente (embora, com o iOS 5, pareça haver algo chamado ARC que deve facilitar minha vida), mas o que mais? Não estou falando apenas da API C (por exemplo, para obter o pecado de um número, chamo a função sin ()), é para isso que serve o Google. Estou falando de expressões básicas em C / C ++ que o desenvolvedor C # médio desconhece.
Respostas:
Não se preocupe com isso. Se você conhece C suficiente para escrever chamadas de função, entender e escrever expressões aritméticas e lidar com ponteiros, provavelmente estará bem. Você ainda precisará aprender o Objective-C, é claro, mas grande parte do código que escrever será mais Objective-C do que o simples C. C. Acostumar-se ao estilo Objective-C e aprender o Cocoa Touch consumirá muito mais do seu tempo do que revisar C.
Normalmente digo às pessoas que estão começando do zero para aprender C antes de pular para o Objective-C. Eu mantenho esse conselho - aprender C ensinará a você o conhecimento básico que você precisa para trabalhar efetivamente no Objective-C. Você precisa saber o que é uma função, como usar estruturas de controle como loops e instruções condicionais, como os vários tipos de dados básicos funcionam, o que é uma estrutura e assim por diante. E como todo C é um jogo justo no Objective-C, quanto mais C você souber, melhor estará preparado para entender o código que poderá encontrar. Dito isso, muitas tarefas são realizadas de maneira diferente no Objective-C, portanto os idiomas C padrão não são necessariamente os idiomas Objective-C padrão. NSString e NSArray substituem as matrizes de estilo C. Os ponteiros são onipresentes, mas são usados principalmente para se referir a objetos - a aritmética dos ponteiros não aparece com muita frequência.
O mesmo vale para C ++ ... você não precisará de muito C ++ para se dar bem no Objective-C. Em algum momento no futuro, talvez você precise aumentar seu conhecimento de C ++ para integrar algum código C ++ existente em um aplicativo e, nesse ponto, talvez seja necessário gastar algum tempo aprendendo, mas não deixe que a falta de conhecimento de C ++ pare você de tentar sua mão na programação do iOS.
fonte
Não é uma resposta completa, mas você precisa conferir este pdf se quiser aprender o Objective-C.
É uma leitura muito fácil, se você gosta de ler para aprender idiomas, em vez de examinar exemplos ou códigos de exemplo. Contanto que você tenha uma noção do POO, buscar Obj-C é uma navegação tranquila. O que realmente me incomoda em aprender o desenvolvimento do iPhone é o uso do Xcode, que é outra história ....
Apple Obj-C
fonte
Depende.
Um subconjunto da linguagem de programação (às vezes chamado de "as partes boas") geralmente funciona bem se seus objetivos não ultrapassam os limites desse subconjunto.
Se você quiser fazer coisas simples da interface do usuário (as coisas que você poderia fazer em um aplicativo da Web), ficar com os tipos de dados Cocoa e Foundation e escrever código sem erros, provavelmente conseguiria conhecer muito pouco do C sob o Objetivo C .
No entanto, se você deseja executar o processamento ou análise de áudio, vídeo, imagem (etc.) no iOS, as APIs e o código de exemplo de referência com o qual provavelmente você estará trabalhando estão principalmente em C e são idiomáticos em C.
Mas o objetivo C é um superconjunto estrito de C, para que erros de digitação e bugs possam se manifestar em qualquer nível do ambiente de linguagem. Se o seu código tiver bugs, talvez seja necessário conhecer as coisas em profundidade no ponteiro C, tipo de dados e nível de heap para analisar uma falha e depurá-la. O objetivo C não é "gerenciado" e, portanto, pode-se criar uma bagunça retorcida na memória, propósito ou como um acidente completo.
fonte