Pergunta

Eu tenho sido programação em C, C ++, C # e algumas outras línguas por muitos anos, principalmente para Windows e Linux, mas também plataformas embarcadas. Recentemente começou a fazer alguma programação iPhone como um projeto paralelo, então eu estou usando plataformas Apple, pela primeira vez desde os meus dias do Apple II. Eu estou querendo saber o que os outros desenvolvedores que estão vindo para Mac OSX, Xcode e iPhone SDK pensar. Aqui estão as minhas impressões, até agora:

  • Mac OSX: muito confuso, que tendem a acabar com muitas janelas abertas e não sei o que é onde. Felizmente há visão do olho do pássaro, sem ele eu estaria perdido. Com a casca pelo menos há todas as coisas familiares para que me ajuda muito.

  • Xcode: não se sente tão bom quanto VisualStudio ou Eclipse, os dois ambientes estou familiarizado. Eu acho que eu poderia me acostumar com isso, mas eu estou querendo saber se a Apple não seria melhor fora com Eclipse. Antes de encontrar a configuração onde todas as janelas estão juntos preso eu odiava, agora eu posso tolerar isso.

  • iPhone SDK: estranho. Eu entendo o desejo da Apple para controlar seu ambiente, mas neste dia e idade parece apenas um pouco desprezível e eles estão perdendo muito por destruir desenvolvedor boa vontade.

  • Objective-C: Eu conheço sobre isso há anos, mas nunca teve um olhar para ele. A sintaxe é off-putting, mas eu estou realmente muito intrigado com o idioma. Eu acho que é uma terceira perna interessante entre C ++ e C #, tanto que eu gosto muito. Existe alguma chance de Obj-C vai sair da caixa de areia Mac devido ao pequeno aumento na popularidade da tecnologia Apple?

curioso para ler seus pensamentos,

Andrew

Foi útil?

Solução

Eu estou no mesmo barco que você (um pouco). Eu tenho vindo a desenvolver em C # para 7 anos, desde que .NET 1.0. Nos últimos duas semanas eu estive me ensinando Cacau e Objective-C. Aqui estão as minhas impressões (nota por nota com seu)

  • Acordado em que a desordem pode ser um problema. I tendem a usar os espaços fortemente no desenvolvimento no Xcode (put XCode em um só espaço, Interface Builder em outro espaço, Instrumentos em um terceiro espaço). Se você não tem Leopard (e, portanto, sem espaços), então use Command-H para ocultar sua janela ativa. Usando que tende a coisas limpas até um pouco (no entanto, seria bom se você pudesse comandar-h automagicamente a janela atual quando-tab'ing comando para outro app).

  • Eu estou gostando XCode mais e mais. Eu odeio Visual Studio - Acho que é para ser instável, lento, e bem, apenas uma espécie de IDE de baixa qualidade. Comparativamente eu encontrei XCode para ser rápido, estável, e eu gosto de como ele organiza e filtra seus arquivos. Eu não estou muito em meus atalhos XCode, mas eu estou esperando há uma maneira que eu puder rápida passagem de uma classe para outra (semelhante ao Ctrl + N atalho no ReSharper). Intellisense poderia ser melhor no que diz respeito à forma como ele é exibido para o usuário, mas eu realmente gosto de como ele essencialmente cria um modelo e você pode ctrl + / para saltar para o próximo argumento em uma mensagem.

  • Eu estou odiando a documentação no XCode. O sistema de ajuda é uma porcaria, e por qualquer razão, não encontra o que estou procurando. Eu acabar apenas pesquisando para qualquer coisa eu preciso saber ... Eu espero que eles melhorar a documentação. Este é o meu maior carne agora.

  • Ainda não chegamos lá, como eu estou passando o quadro de cacau completo para Mac desktops. Até agora eu estou realmente, realmente gosto do que vejo. Uma coisa que eu vou dizer é que seria bom se o iPhone SDK permitido para coleta de lixo ...

  • Objective-C - Eu nunca usei, esta é a minha primeira incursão no-lo. No começo eu estava meio wierded pela sintaxe e os colchetes para mensagens, mas está crescendo realmente em mim. É tão rápido para roçar um método e ver as chamadas mensagens que o método faz. Quanto mais eu usá-lo, mais Objective-C só se sente bom ... no entanto templates / genéricos seria uma adição bem-vinda para o idioma.

Ao todo, a minha incursão no desenvolvimento Mac tem sido agradável, e estou animado para começar a trabalhar (hoje! Yay!) Em alguns projetos reais mac / iPhone.

Outras dicas

Eu concordo com os seus sentimentos. Vindo de ferramentas de desenvolvimento da Microsoft (e eclipse) para XCode é uma espécie de duras. XCode só se sente ... inacabada em alguns aspectos. Ele certamente não tem o polonês que eu esperam de VS e Eclipse.

O SDK é semelhante, muito do que é mal documentada, e há um monte de buracos onde você sabe que algo deveria ser, mas ele simplesmente não é. Tentando controlar cuidadosamente a reprodução de arquivos de áudio / vídeo é um exemplo.

Objective-C, no entanto, é grande. Eu realmente gosto da língua, apesar de suas peculiaridades e idiossincrasias (mensagens para nulo não é uma exceção em tempo de execução? Realmente?) Uma vez que seus olhos C ++ se acostumar com a sintaxe, mensagens anônimas vagamente digitado na verdade, acaba sendo muito legal de jogo com (se um pouco perigoso e propenso a RTEs.)

Eu realmente quero saltar e começar a desenvolver aplicativos para iPhone também. Eu fiz um pouco de Motorola, Blackberry e desenvolvimento Windows Mobile, que foram todos fresco e leste para entrar com uma boa documentação, de fácil acesso e instalar SDKs. Até agora, eu sinto a Apple está sendo um elitista pouco no fato de que parece que seu ambiente de desenvolvimento está disponível apenas em um Mac. Estou também, não muito gostar de seus conceitos de licenciamento. Se você quer ser capaz de realmente publicar aplicativos, você precisa passar por eles, e eles têm a palavra final sobre se você pode ou não pode ou se o seu aplicativo é considerado aceitável para ser executado em seu produto superior. É minha convicção que eles estão tornando mais difícil para a comunidade open source para manter e aplicações produzir ou para o neophite iPhone, como eu, até mesmo para começar a escrever aplicativos para os produtos. Há um monte de coisas ruins disse sobre a Microsoft, mas, eu tenho que dizer que eles obter as suas APIs e SDKs lá fora muito antes de seus produtos chegaram ao mercado e realmente incentivar os programadores de todos os níveis para cavar e obter aplicativos escrita envolvidos em suas estruturas e sistemas operacionais.

Eu tenho trabalhado em algumas aplicações pequena iPhone e eu estou apenas surpreso que eles não incluem os componentes da estrutura que permitem aos desenvolvedores acessar facilmente serviços web SOAP. Qualquer outra pessoa trabalhar em um ambiente de TI da empresa sentir a dor?

Eu pessoalmente acho que a documentação é muito bom neste momento. Em qualquer classe C Objective você pode opção-doubleClick para trazer a documentação para esse termo, e se existem quaisquer exemplos de projetos que utilizam essa classe especial que é listado para (pelo menos para muitas classes iPhone específicos).

Também olhar para ligar Assistente de Pesquisa quando você estiver primeira partida fora, e ligue Sense código (não acho que é ativado por padrão). A combinação de XCode + Interface Builder é bastante poderoso quando você se acostumar com isso e, sinceramente, em algumas décadas eu nunca usei uma melhor construtor de interface em termos de como a integração de código funciona ou a capacidade de criar interfaces que inteligentemente redimensionar sem uma tonelada de trabalho extra.

Eu sou novo em programação iPhone e XCode também, depois de muitos anos de programação para muitas plataformas e minha impressão é bastante perto de seu (com algumas diferenças):

  • Mac OSX: Troquei a partir do Windows cerca de 2 anos (como um experimento) e eu fiquei :) - Eu não acho que eu vou voltar. Tendo uma base Unix é muito legal e eu amo o chamativo GUI + I como a simplicidade básica da interface. Levei cerca de 2 meses para se acostumar com isso, mas eu não posso imaginar de volta indo. Eu odeio o layout do teclado MacBook e alguns dos embora limitação teclado do OSX. É engraçado como uma empresa que está tão orgulhoso de suas percepções de usabilidade pode vir até com um tal conjunto ruim de decisões. Talvez os melhores exemplos não estão a ter um menu de contexto (botão direito do mouse) atalho de teclado eo fato de que você precisa de duas chaves para realizar tarefas como Home, End, PgUp, etc. Meu principal conselho é gastar o tempo aprendendo como muitos teclado atalhos possível. Eu recomendo também instalar e utilizar as seguintes aplicações 3rd party que melhoraram substancialmente a minha experiência Mac: Quicksilver , Path Finder , 1Password , Coisas , TextMate , texto Wrangler & Transmit .

  • Xcode: Eu concordo totalmente com você. Eu acho que XCode é bastante primitiva . Eu compará-lo com IntelliJ IDEA que eu trabalho com um monte e parece que a Apple está preso pelo menos 7 anos no passado:

    • navegação de código é tão primitivo com muitas janelas que saltam ao redor
    • você tem que usar o mouse o tempo todo
    • templates é muito limitado e é baseado em ingênuos conceitos macro sem relação com o contexto ou escopo
    • refatoração é limitado a apenas algumas ações simples
    • você não pode mesmo facilmente realizar tarefas triviais como substituir um método
    • Código Sense é bom, mas poderia ter sido muito melhor se ele entendeu digitação ...

    A grande ironia é que os desenvolvedores sérios Mac não entendem que eles têm um problema ... Eles estão tão acostumados com a bagunça que eles têm de lidar com que eles não podem imaginar um mundo melhor ... em vez de ajudá-lo, XCode continua ficando no caminho. I pode vir até com dezenas de exemplos sobre como este ambiente é uma porcaria, quando comparado ao moderno Java IDEs (Eclipse, IntelliJ), mas eu acredito que é um desperdício de tempo - parece que a Apple é orgulhoso demais para aprender com os outros ... que é engraçado se você considerar o fato de que os inventores de Java não foram tímidos para aprender Objective-C . Meu único conselho (para mim também) é tomar uma respiração profunda sempre que XCode aberto e aprender tanto quanto possível com os especialistas que estão mais habituados a este ambiente.

  • iPhone SDK: é ainda pior do que isso - Consideramos portar nosso aplicativo móvel para o iPhone um par de meses atrás, mas decidiu não se preocupar porque nós estávamos preocupados que a Apple pode rejeitá-lo na app store e você não pode saber com antecedência (eles têm rejeitado um aplicativo algo semelhante no passado pelo facto de que é muito próximo ao iTunes!)

  • Obj-C: Acho Objective-C bastante agradável e depois de alguns dias você se acostumar com a sintaxe de mensagens estranho, mas o menino que eu perca a coleta de lixo ... Tendo que lidar com as alocações de memória e libera sente um pouco como voltar no tempo para o meu início de C / C ++ dias. Eu estou apenas começando a aprender as nuances dessa linguagem, mas até agora eu gosto do que eu encontrei. Há algumas dicas espalhadas ao redor da web sobre Obj-C melhores práticas que você não consegue encontrar nos documentos oficiais e eu aprendi muito com eles (ver por exemplo a discussão a seguir aqui em stackoverflow )

Eu vim de uma # fundo C bem e têm vindo a trabalhar com o iPhone SDK desde beta 2. Eu concordo totalmente com Cranley sobre VS sendo um pouco desajeitado em comparação com o Xcode. Xcode é diferente caminho, e completamente estranha quando você começar a usá-lo. Então foi VS embora de volta ao dia. Depois de conseguir pela curva de aprendizado é uma experiência maravilhosa. Os aplicativos que eu estou desenvolvendo lado uso C # servidor (web service) e eu absolutamente odeio ter de mudar para VS para escrever o código de serviço web a partir de Xcode. Obj-C é também muito divertido de usar uma vez que você aprender como ele funciona melhor:. Delegados (muito diferentes do que os delegados .NET), mensagens, categorias e todas as outras esquisitices presente

Eu fiz um pouco de Java e Flex programação anterior para .NET e eu sempre odiei os docs .NET comparação com docs Java. Eles simplesmente não cortá-la. Eu, pessoalmente, ter encontrado docs Xcodes e sistema de busca a ser nada menos que incrível. Há guias em PDF inúmeras ligados a partir dos documentos que têm de toneladas de código de exemplo. Pense sobre isso: o iPhone SDK está fora de beta por cerca de 2 meses. Os documentos mostram um nível de muitos anos de maturidade. E sim, é porque Obj-C tem sido em torno de um ano e os quadros são semelhantes.

No geral, o maior problema que eu encontrei é que há um monte de desenvolvedores .NET saltar sobre o iPhone movimento e tentando usar Obj-C, como se fosse C # ou VB. Eles não conseguem ler os docs básicos Obj-C e muito menos os docs iPhone e, em seguida, eles ficam muito frustrados e eventualmente falhar. Os fóruns de discussão são cheios desse cenário. programação iPhone não é fácil. Aprender uma nova língua não é fácil. É preciso tempo e um monte de try.fail.try. Não é .NET assim perder essa mentalidade antes mesmo de começar e as coisas vão ser maravilhoso.

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