Pergunta

Como desenvolvedor .NET, eu sempre sonhei com a possibilidade de desenvolver com meus aplicativos de habilidades existentes (C#) para o iPhone.

Ambos os programas exigem um Mac e o iPhone SDK instalado.

O Appcelerator Titanium foi o primeiro aplicativo que tentei e baseia -se em expor algumas API nativas do iPhone ao JavaScript para que elas possam ser chamadas usando esse idioma.

A Monotouch começa em US $ 399 por ser capaz de implantar no iPhone e não no simulador do iPhone enquanto o titânio é gratuito.

Monotouch (Monodevelo) tem um IDE que está atualmente ausente no titânio (mas você pode usar qualquer editor como Textmate, Aptana ...)

Eu acho que os dois programas geram no final um aplicativo nativo pré -compilado (também se eu não tenho certeza do tamanho do aplicativo final no iPhone, pois acho que as chamadas da estrutura .NET são precedentes no momento da compilação em Monotouch).

Também não tenho certeza sobre a cobertura completa de toda a API e recursos do iPhone.

O Titanium também tem a vantagem de ativar o desenvolvimento de aplicativos do Android, mas como desenvolvedor AC# ainda acho que a Monotouch Experience mais como o Visual Studio One.

Qual você escolheria e quais são suas experiências em Monotouch e Titanium?

Foi útil?

Solução

Como qualquer que-tool-ou-plataforma-ou-idioma ou frame trabalho-ou qualquer pergunta, deve se resumir ao que vocês querer.

Esqueça todos os conselhos que você quer que você se desenvolvam para que você faça o que você faz para que você faça os conselhos. Se você estiver interessado em aprender Objetivo-C, Xcode e Bits Apple associados, então Goferit. Eu fiz. Tem sido divertido, mas minha O interesse era desenvolver aplicativos para iPhone. Aprender um novo idioma, estrutura e IDE foi apenas um bônus (eu gosto dessas coisas). Também era necessário quando eu comecei.

Eu tenho trabalhado com o Monotouch desde que foi lançado e adoro. EU Prefira C# ao Objective-C, e gosto de ter acesso ao subconjunto da estrutura .NET (Mono) que o Monotouch fornece. Há certas coisas que são simplesmente mais fáceis de fazer com .NET do que cacau (manipulação de cordas, manipulação de data, nada Xml, etc.).

Também gosto de não ter que lidar mais com a contagem de referência. Fiquei mimado por anos por não ter que acompanhar os recursos nesse nível. Não me importo de ter que limpar depois de mim, mas não quero ter que fazer manualmente algo que todas as outras plataformas de desenvolvimento moderno que eu usei fazem para mim automaticamente. Além disso, mesmo para os desenvolvedores-C de objetivos experientes, a contagem de referência não é um acéfalo. Percorra a saída do console do OS X em algum momento para ver quantos aplicativos travam devido a problemas de gerenciamento de memória (eu sei - isso pode acontecer com basicamente qualquer aplicativo, mas é muito mais fácil cometer os erros que levam a essa situação quando você se envolve em desenvolvimentos sobrecarregados envolvidos cuja atenção foi destruída por doze horas, se isso, se isso, caso contrário, isso e então isso e blá blá blá).

Ainda uso o Objective -C/Xcode - realmente aprendi a gostar das ferramentas da Apple. Sinceramente, sinto que eles são estranhos e um pouco misteriosos, mas ainda divertidos.

Mas ... então eu também gosto disso:

public string SomeString { get; set; }

Para fazer a mesma coisa com o Objective-C (no iPhone, de qualquer maneira) exige que você declare uma variável local para apoiar a propriedade, escreva a declaração da propriedade e use a diretiva "sintetize" para que a propriedade seja gerada para você (dependendo Em quais atributos de propriedade você especificar, você pode ter uma propriedade que envolve getters e setters que cuidam da contagem de referência para você - em geral, isso é Um tempo de economia, mas o C# Way é o vencedor claro aqui).

Esse é apenas um exemplo de como o Monotouch pode facilitar sua vida, especialmente se você estiver acostumado a .NET/Java/Python/outros idiomas que não exigem que você suja os dedos com o Mangerment de memória (a menos que você queira) .

No que diz respeito ao iPhone-ness, além de saltar parte do .NET para o mundo do iPhone, os mapas de namespace monotouch para cocoatouch; portanto, se você está confuso sobre, digamos, o monotouch uiviewcontroller, você pode simplesmente pular para os documentos da Apple No UIViewController. Monotouch .NET-Imes CoCoatouch, mas é próximo o suficiente para que você seja improvável que você atinja uma parede (que também não teria atingido se você estivesse usando o Xcode/Objective-C). É liso.

O titânio é diferente. Já que eles estão tentando (tentando) Para criar uma camada de abstração que permite escrever o mesmo aplicativo para várias plataformas, você vai lidar com as desvantagens usuais: APIs totalmente diferentes, perda de flexibilidade (o mesmo pode ser dito de monotouch, mas não remotamente para o mesmo grau), e basicamente tendo que aprender uma plataforma totalmente nova (que é o que você está tentando evitar, contornando o Xcode/Objective-C/CoCoatouch, certo?).

Eu também odeio JavaScript, então vou ser tendencioso contra o titânio. Mas mesmo que isso não fosse o caso - mesmo que eu pudesse usar um idioma que eu goste - as APIs não fazem cócegas na minha fantasia. Ou meu qualquer coisa.

Independentemente das ferramentas de desenvolvimento que você escolher, você vai Acabamos tendo que aprender algo sobre cocoatouch. Seja Xcode/Objective-C, Monotouch ou Titanium, algo Vai quebrar ou ficar todo instável, e você acabará tendo que se referir à documentação do CoCoatouch.

Se eu estivesse dando uma palestra sobre o desenvolvimento do iPhone (o que tenho e o que farei de novo) e, se eu discutisse alternativas às ferramentas de desenvolvimento da Apple (o que eu farei), eu ainda incentivaria fortemente os desenvolvedores a trabalhar pelo menos trabalhar Através de alguns aplicativos básicos do iPhone usando as ferramentas nativas. Isso fará de você um desenvolvedor melhor para a plataforma - período. E você pode usar esta fase inicial para determinar se você mesmo querer Para usar qualquer coisa que não seja os bits gratuitos fornecidos pela Apple. Você pode não. Eu tenho usado o Monotouch porque me agrada - não porque é necessário.

Então, para resumir alguns critérios básicos:

  • Preferência (idioma/estruturas)

  • Dispositivos (você se preocupa com plataformas que não são da iphone ou acha que algum dia?)

  • Conforto (se você gosta e conhece C# muito mais do que o Objective-C, não há razão para não ir com Monotouch)

E não escute os opositores, a menos que eles realmente tenham usado A tecnologia que eles estão falando. Por exemplo, eu li sobre o titânio, mas não tenho experiência com isso - só sei que não quero nada com isso por causa das minhas preferências. Isso não torna "ruim" - apenas algo que eu não quero na minha vida.

A multidão Objective-C pode ser impressionantemente zelosa. Embora existam muitos desenvolvedores de mente aberta, existem assim, então, assim Muitos que pensam que Objective-C e Cocoa e blá blá blá são as últimas ferramentas de desenvolvimento que Devkind jamais precisará.

Ignore-os.

Se você está preocupado com o apoio, aqui estão algumas coisas a considerar:

  • A Apple provavelmente permanecerá atualizada, pois são os que estão fazendo esse lixo.

  • É provável que o Monotouch permaneça atualizado - os Mono Peeps fizeram um trabalho incrível, acompanhe a Microsoft, e não vejo razão para que eles não façam o mesmo com a Apple. Estou impressionado com o que eles fazem. E apesar de Monotouch ter sido lançado, como, cinco minutos atrás, eles já têm uma atualização para o iPhone 3.1. Eles são sérios sobre isso, e acho que eles são mágicos. Eles são os elfos Keebler do mundo dev. Eles se sentam em suas camadas secretas e zombam de coisas que todo mundo (ok - nem todo mundo) gosta, mas que ninguém mais tentaria fazer.

  • O titânio se tornará uma API unificada estranha para escrever aplicativos para várias plataformas que são inteiramente suas próprias coisas, ou se tornará cada vez mais lascada à medida que as capacidades de diferentes plataformas divergem. Sim, isso é um bando de típicas de uma poltrona nerdmente de futuro ... Eu deveria ter precedido esse item de bala com "É minha opinião que ..." se houvesse uma maneira de voltar e alterá-lo.

Vou calar a boca agora.

Vá com o que você gosta. Monotouch é uma alternativa "segura" às coisas da Apple. Receio que o titânio caia no mesmo velho oops-essa super-altura de alto nível de plataforma-abstration-camada de camada que não é uma estrada que não há muito trabalho que tantas outras tecnologias têm. Mas se você está fazendo algo simples, não há mal em dar uma chance, especialmente considerando que é gratuito durante o período beta.

Corretamente.

Realmente calado a boca agora ... Espero que isso ajude.

Outras dicas

Essas são maneiras divertidas e interessantes de criar aplicativos para iPhone. Mas, para o desenvolvimento de iPhone nativo verdadeiramente rápido, sua melhor aposta é o iPhone SDK e o Xcode gratuitos.

Para ser sincero, as coisas mais difíceis de aprender são as capacidades das próprias estruturas, não a sintaxe da linguagem. Mas esse é um problema que você deve enfrentar de qualquer maneira, pois esses IDEs/idiomas ainda exigem que você compreenda algumas das convenções de cacau (e toque de cacau).

Não digo isso como um cacau / objeto-c esnobe, mas se você conhece C (que como um C# dev que você faz), não há realmente nenhuma barreira para a entrada.

Além disso, você terá acesso a toneladas de tutoriais e código de amostra que simplesmente não estarão disponíveis para esses tradutores/IDEs/idiomas incipientes.

Aprender outra linguagem de programação raramente é uma coisa ruim e, como programador experiente, seu investimento no tempo não será tão grande quanto você pensa.

Eu criei um projeto de código aberto http://propertycross.com Isso ajuda os desenvolvedores a selecionar uma estrutura móvel de plataforma cruzada, mostrando o mesmo aplicativo implementado com Sencha, Titanium, Xamarin e muito mais. Este projeto permite comparar facilmente uma ampla gama de estruturas em termos de experiência do usuário final, código, IDE, experiência do desenvolvedor etc ...

Eu meio que gosto da ideia de fornecer meios para controlar rapidamente o iPhone Dev com as pessoas techno que já sabem. Eu pessoalmente, como desenvolvedor de Java, uso o ispectrum (http://www.flexycore.com). Ele também vem com um IDE, depurador e outras coisas, o que torna realmente conveniente desenvolver porque se beneficia de todo o poder do plug -in Java Eclipse. Sendo baseado no Java, isso também permite reutilizar facilmente o código já existente de outros aplicativos Java, o que pode ser realmente útil, desde que o Java esteja presente em quase todas as plataformas (desktop e celular), exceto o iPhone. Além disso, é gratuito para projetos de código aberto.

Prefiro considerar esse tipo de soluções, porque não gosto da ideia de voltar ao desenvolvimento do Emacs :).

Eu sei que este é um tópico antigo, mas no interesse de permanecer atual, parece monotouch e outras estruturas de plataforma cruzada são vai ser banido no SDK 4.0. Sua única aposta "segura" para escrever aplicativos para iPhone é usar o Xcode e o Objective-C, pelo menos por enquanto.

Se você é um programador C# por que não deve investir algumas vezes para aprender o objetivo C. Honestamente falando, não levará muito tempo de você. Mas você se sente bem em trabalhar em uma nova plataforma com um novo idioma. Aprender coisas novas o tempo todo me fascina.

Existem inúmeras maneiras de entrar no dispositivo. A Apple declarou na licença SDK que a única maneira aprovada de entrar no dispositivo é via C, C ++, Objectivec e JavaScript.

Parece que, neste momento, os aplicativos criados no Monotouch e no Appcelerator Titanium estão sendo aceitos na App Store. Graças à mudança de licença, há muito medo, incerteza e dúvida sobre esse assunto. A Apple assustou todo mundo que não está fazendo o Objectivec.

Eu sugeriria que você faça o que faz mais sentido para você como desenvolvedor. Se você conhece C# e .NET, deve ir com Monotouch. Se você conhece o ObjectiveC ou a plataforma Mac, o ObjectiveC é provavelmente o caminho a percorrer. Se você conhece X e está no iPhone, bem, X é onde eu sugiro procurar primeiro.

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