Domanda

Come sviluppatore .Net ho sempre sognato la possibilità di sviluppare con le mie competenze esistenti (c#) applicazioni per Iphone.

Entrambi i programmi richiedono l'installazione di un Mac e dell'SDK di Iphone.

Appcelerator Titanium è stata la prima app che ho provato e si basa sull'esposizione di alcune API native di Iphone a Javascript in modo che possano essere chiamate utilizzando quella lingua.

Monotouch parte da $ 399 per poterlo implementare sull'Iphone e non sul simulatore dell'Iphone mentre Titanium è gratuito.

Monotouch (Monodevelop) ha un Ide che attualmente manca in Titanium (ma puoi usare qualsiasi editor come Textmate, Aptana...)

Penso che entrambi i programmi generino alla fine un'app nativa precompilata (anche se non sono sicuro della dimensione dell'app finale sull'Iphone poiché penso che le chiamate del framework .Net siano precollegate al momento della compilazione in Monotouch).

Inoltre, non sono sicuro della copertura completa di tutte le API e le funzionalità dell'Iphone.

Titanium ha anche il vantaggio di consentire lo sviluppo di app Android, ma come sviluppatore C# trovo ancora che l'esperienza Monotouch sia più simile a quella di Visual Studio.

Quale sceglieresti e quali sono le tue esperienze su Monotouch e Titanium?

È stato utile?

Soluzione

Come ogni domanda su quale strumento o piattaforma o linguaggio o framework o qualunque altra domanda, dovrebbe in realtà ridursi a cosa Voi Volere.

Dimentica tutti i consigli del tipo "se vuoi sviluppare per questa piattaforma, allora devi pagare la quota".Se sei interessato a imparare Objective-C, Xcode e i bit Apple associati, allora goferit.L'ho fatto.È stato divertente, ma Mio l'interesse era nello sviluppo di app per iPhone.Imparare un nuovo linguaggio, framework e IDE è stato solo un vantaggio (mi piacciono queste cose).Era necessario anche quando ho iniziato.

Lavoro con MonoTouch da quando è stato rilasciato e lo adoro. IO preferisco C# a Objective-C e mi piace avere accesso al sottoinsieme del framework .Net (Mono) fornito da MonoTouch.Ci sono alcune cose che sono semplicemente più facili da fare con .Net che con Cocoa (manipolazione di stringhe, manipolazione di date, nulla XML, ecc.).

Mi piace anche non dover più occuparmi del conteggio delle referenze.Sono stato viziato da anni in cui non ho dovuto tenere traccia delle risorse a quel livello.Non mi dispiace dover ripulire me stesso, ma non voglio dover fare manualmente qualcosa che ogni altra piattaforma di sviluppo moderna che ho usato fa automaticamente per me.Inoltre, anche per gli sviluppatori Objective-C esperti, il conteggio dei riferimenti non è un gioco da ragazzi.Scorri l'output della console di OS X a volte per vedere quante app si bloccano a causa di problemi di gestione della memoria (lo so, questo può accadere praticamente con qualsiasi app, ma è molto più facile commettere gli errori che portano a questa situazione quando si coinvolgono sviluppatori oberati di lavoro la cui capacità di attenzione è stata distrutta da dodici ore di se questo e se quello e altro questo e altro quello e blah blah blah).

Uso ancora Objective-C/Xcode: ho davvero imparato ad apprezzare gli strumenti Apple.Onestamente li trovo imbarazzanti e un po' arcani, ma comunque divertenti.

Ma...poi mi piace anche questo:

public string SomeString { get; set; }

Per fare la stessa cosa con Objective-C (su iPhone, comunque) è necessario dichiarare una variabile locale per supportare la proprietà, scrivere la dichiarazione della proprietà e quindi utilizzare la direttiva "sintetizza" per generare la proprietà per te (a seconda su quali attributi di proprietà specifichi, potresti avere una proprietà che racchiude getter e setter che si occupano del conteggio dei riferimenti per te - nel complesso, questo È un risparmio di tempo, ma in questo caso il metodo C# è il chiaro vincitore).

Questo è solo un esempio di come MonoTouch può semplificarti la vita, soprattutto se sei abituato a .Net/Java/Python/altri linguaggi che non richiedono di sporcarti le dita con la gestione della memoria (a meno che tu non lo voglia) .

Per quanto riguarda l'iPhone, a parte portare parte di .Net nel mondo iPhone, lo spazio dei nomi MonoTouch si associa a CocoaTouch, quindi se sei confuso, ad esempio, su MonoTouch UIViewController, puoi semplicemente passare ai documenti Apple sull'UIViewController.MonoTouch .Net-izes CocoaTouch, ma è abbastanza vicino che è improbabile che tu colpisca un muro (che non avrebbe colpito anche se stavi usando Xcode/Objective-C).È perfetto.

Il titanio è diverso.Dal momento che ci stanno provando (provando) per creare un livello di astrazione che ti consenta di scrivere la stessa app per più piattaforme, dovrai affrontare i soliti inconvenienti:API totalmente diverse, perdita di flessibilità (lo stesso si potrebbe dire di MonoTouch, ma non nella stessa misura) e fondamentalmente dover imparare una piattaforma completamente nuova (che è ciò che stai cercando di evitare aggirando Xcode/Objective -C/CocoaTouch, giusto?).

Odio anche JavaScript, quindi sarò prevenuto nei confronti di Titanium.Ma anche se così non fosse, anche se potessi usare un linguaggio che mi piace, le API non stuzzicano la mia fantasia.O qualunque cosa.

Indipendentemente dagli strumenti di sviluppo che scegli, tu Volere finire per dover imparare qualcosa su CocoaTouch.Che si tratti di Xcode/Objective-C, MonoTouch o Titanium, qualcosa si romperà o diventerà completamente traballante e alla fine dovrai fare riferimento alla documentazione di CocoaTouch.

Se dovessi tenere un discorso sullo sviluppo dell'iPhone (cosa che ho fatto e che farò di nuovo) e se dovessi discutere di alternative agli strumenti di sviluppo di Apple (cosa che farò), incoraggerei comunque fortemente gli sviluppatori a lavorare almeno attraverso alcune app iPhone di base utilizzando gli strumenti nativi.Ti renderà uno sviluppatore migliore per la piattaforma, punto.E puoi usare questa fase iniziale per determinare se sei pari Volere per utilizzare qualcosa di diverso dai bit forniti gratuitamente da Apple.Potresti non farlo.Utilizzo MonoTouch perché mi fa piacere, non perché sia ​​necessario.

Quindi, riassumendo alcuni criteri fondamentali:

  • Preferenza (lingua/framework)

  • Dispositivi (ti interessano le piattaforme diverse dall'iPhone o pensi che potresti farlo un giorno?)

  • Comfort (se ti piace e conosci C# MOLTO meglio di Objective-C, non c'è motivo per non utilizzare MonoTouch)

E non ascoltare gli oppositori a meno che non lo abbiano effettivamente fatto usato la tecnologia di cui stanno parlando.Ad esempio, ho letto di Titanium, ma non ne ho esperienza, so solo che non voglio avere niente a che fare con esso per via delle mie preferenze.Questo non lo rende "cattivo", è solo qualcosa che non voglio nella mia vita.

Il pubblico di Objective-C può essere straordinariamente zelante.Sebbene ci siano molti sviluppatori dalla mentalità aperta, ce ne sono così, quindi... COSÌ molti che pensano che Objective-C e Cocoa e blah blah blah siano GLI ultimi strumenti di sviluppo di cui gli sviluppatori avranno mai bisogno.

Ignorali.

Se sei preoccupato per il supporto, ecco alcuni aspetti da considerare:

  • È probabile che Apple rimanga attuale, poiché sono loro che producono questa spazzatura.

  • È probabile che MonoTouch rimanga attuale: gli utenti di Mono hanno fatto un ottimo lavoro tenendo il passo con Microsoft e non vedo motivo per cui non faranno lo stesso con Apple.Sono stupefatto da quello che fanno.E nonostante MonoTouch sia stato rilasciato, tipo, cinque minuti fa, hanno già un aggiornamento per iPhone 3.1.Sono seri su questo punto e penso che siano magici.Sono gli Elfi Keebler del mondo degli sviluppatori.Si siedono nei loro strati segreti e tirano fuori cose che piacciono a tutti (ok, non a tutti), ma che nessun altro tenterebbe nemmeno di fare.

  • Titanium o diventerà una scomoda API unificata per scrivere app per più piattaforme che è interamente una cosa propria, oppure diventerà sempre più frammentato man mano che le capacità delle diverse piattaforme divergono.Sì, è un mucchio di tipici nerd da poltrona che guardano al futuro...Avrei dovuto far precedere questo punto elenco con "È mia opinione che..." Se solo ci fosse un modo per tornare indietro e cambiarlo.

Adesso starò zitto.

Vai con quello che ti piace.MonoTouch è un'alternativa "sicura" alle cose di Apple.Temo che Titanium seguirà la stessa vecchia strada, oops, questa piattaforma di altissimo livello con strati di astrazione e roba che non funziona davvero, come hanno tante altre tecnologie.Ma se stai facendo qualcosa di semplice, non c'è nulla di male nel provarlo, soprattutto considerando che è gratuito durante il periodo beta.

Va bene.

Adesso stai davvero zitto...Spero che aiuti.

Altri suggerimenti

Questi sono modi divertenti e interessanti che si possono costruire applicazioni per iPhone. Ma, per veramente rapido sviluppo nativo iPhone, la cosa migliore è la libera SDK iPhone e Xcode.

Per essere onesti, le cose più difficili da imparare sono le capacità dei quadri stessi, non la sintassi del linguaggio. Ma questo è un problema che dovete affrontare in entrambi i casi come questi IDE / Lingue ancora richiedono di cogliere alcune delle convenzioni di cacao (e Cocoa Touch).

Non dico questo come un / Objective-C snob di cacao, ma se si conosce C (che come C # dev si fa) in realtà non c'è alcuna barriera all'ingresso.

Inoltre, si avrà accesso alle tonnellate di tutorial e codice di esempio che proprio non saranno disponibili per queste prime armi traduttori / IDE / lingue.

L'apprendimento altro linguaggio di programmazione è raramente una brutta cosa, e come un programmatore esperto, il vostro investimento di tempo non sarà così grande come si pensa.

Ho creato un progetto open source http://propertycross.com che aiuta gli sviluppatori selezionare un cellulare cross-platform quadro mostrando la stessa applicazione attuata con Sencha, titanio, Xamarin e più. Questo progetto permette di confrontare facilmente una vasta gamma di quadri in termini di esperienza dell'utente finale, il codice, IDE, l'esperienza degli sviluppatori ecc ...

I po 'come l'idea di fornire mezzi per ottenere rapidamente una presa su iPhone dev con la gente techno già sapere. I personnaly, come sviluppatore Java, uso iSPectrum ( http://www.flexycore.com ). Inoltre sono dotati di un IDE, debugger e cose, che lo rendono davvero comodo per sviluppare con quanto beneficia di tutta la potenza dei plugin di Eclipse Java. Essendo basato su Java, questo permette anche di riutilizzare facilmente il codice già esistente da altre applicazioni java, che può essere veramente utile a condizione che Java è presente su quasi tutte le piattaforme (desktop e allo stesso modo mobile) ad eccezione di iPhone. In più è gratuito per i progetti open source.

Preferirei considero questo tipo di soluzioni, perché non mi piace l'idea di tornare a sviluppare in emacs :).

So che questo è un argomento vecchio, ma nell'interesse di rimanere aggiornati, sembra che MonoTouch e altri framework cross-platform sono andando a essere vietato in SDK 4.0 . La vostra unica scommessa "sicura" per la scrittura di applicazioni per iPhone è quello di utilizzare XCode e Objective-C, almeno per il momento.

Se sei programmatore C # per cui non si dovrebbe investire alcune volte per imparare Objective C. Onestamente parlando, che verrà ci vuole molto tempo da voi. Ma si sente bene a lavorare in una nuova piattaforma con la nuova lingua. Imparare cose nuove tutto il tempo mi affascina.

Ci sono molti modi per ottenere sul dispositivo. Apple ha dichiarato nella licenza SDK che l'unico modo per ottenere approvato sul dispositivo avviene tramite C, C ++, ObjectiveC, e Javascript.

Sembra a questo punto nel tempo che le applicazioni costruita su MonoTouch e Appcelerator Titanium vengono accettate in App Store. Grazie al cambiamento di licenza, c'è molta paura, incertezza e dubbio su questo argomento. Apple ha paura a tutti di non fare ObjectiveC.

Vorrei suggerire di fare tutto ciò che rende più senso per voi come sviluppatore. Se si conosce C # e .NET, si dovrebbe andare con MonoTouch. Se si conosce ObjectiveC o la piattaforma Mac, ObjectiveC è probabilmente la strada da percorrere. Se si conosce X ed è su iPhone, beh, X è dove vorrei suggerire guardando prima.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top