2010-04-23 16 views
11

saluto, io sono un ragazzo programmatore C#. Sto pensando di iniziare a sviluppare l'app per iphone ma non sono sicuro se dovrei usare C# sotto MonoTouch o semplicemente usare la lingua nativa per iPhone OS Obiettivo C.MonoTouch & C# VS Objective C per iPhone

Esiste un programma diverso per l'app per iPhone che utilizza C# o l'obiettivo C?

C'è limitazione utilizzando C# per programmare app per iPhone o può fare il più Objective C può fare per sviluppare iphone app?

+2

Credo che questa domanda riguardi lo stesso argomento di quello qui riportato: http://stackoverflow.com/questions/1583856/is-monotouch-worth-the-cost-o-should-i-just-learn- objective-c –

+0

Lo fa ... ma ora questa domanda ha un contesto diverso, dati i nuovi termini di Apple che non consentono (tecnicamente) le app cross-compilate. – Armstrongest

risposta

12

MonoTouch avvolge più ma non tutti gli iPhone SDK. Quindi, sì, ci sono cose che non puoi fare (ancora), ma sono relativamente poche e distanti tra loro.

Molte persone .Net trovare che sono più produttivi (almeno inizialmente) con MonoTouch, dal momento che possono sfruttare le loro competenze esistenti. D'altra parte, non c'è niente come lavorare nella lingua nativa della terra, ci vuole solo un po 'di più. Dovrete imparare un po 'Objective-C poiché la maggior parte della documentazione là fuori nel mondo lo usa (e/o di livello C API CoreFoundation). All'inizio la natura dinamica di Objective-C si sentirà straniera, ma potreste trovarla piuttosto liberatoria una volta che la ficcherete completamente. Avendo usato molte lingue nella mia carriera, trovo Objective-C (e le API Cocoa) una delle esperienze di sviluppo più piacevoli in circolazione.

+0

Qual è la frase "hanno scelto di far passare le app di MonoTouch" sulla base? –

+0

@yar, diversi sviluppatori hanno segnalato che le loro app basate su MonoTouch sono state accettate dopo aver accettato la nuova licenza per sviluppatore. Non è chiaro se Apple abbia scelto di non applicare ß3.3.1 per MonoTouch (il mio sospetto) o se Apple non ha ancora iniziato ad applicarlo. –

+0

@Barry Wark, ho pensato che non c'è modo - al momento - per Apple di dire se l'app è fatta con MonoTouch? È vero (voglio dire, data la conoscenza attuale)? –

2

C'è un certo dibattito sul fatto se Apple permettere questo. Sulla faccia di esso, non sembra:

Nella nuova versione di iPhone Developer Accordo di Programma di licenza rilasciato da Apple oggi (e che sviluppatori devono accettare prima di scaricare la versione beta 4.0 SDK), sezione 3.3.1 ora recita:

3.3.1 - le applicazioni possono utilizzare solo le API documentate nei modi prescritto da Apple e non devono utilizzare o chiamare qualsiasi API private. Le domande devono essere originariamente scritti in Objective-C, C, C++, o JavaScript come eseguito dal motore iPhone OS WebKit, e solo il codice scritto in C, C++ e Objective-C può compilare e collegano direttamente contro le API documentate (ad esempio, le applicazioni che collegano alle API documentate tramite una traduzione dell'intermediario o allo strumento di compatibilità sono proibite ).

Da monotouch forums

+1

Sono d'accordo. Fino a quando Apple non chiarirà la loro posizione su MonoTouch, ritengo che sia un serio rischio per un progetto commerciale. –

10

Ecco la risposta di uno sviluppatore MonoTouch piuttosto che un lavoro di congettura da parte di persone sfiorano leggere i blog.

Avete acquistato la licenza MonoTouch? Se così non fosse, sarebbe preferibile chiaramente l'obiettivo-C. Se avete acquistato una licenza allora ha senso per sviluppare l'applicazione in MonoTouch perché:

  • Il dominio e la logica di business può essere facilmente portato per un Windows Mobile 7 app entro la fine dell'anno
  • Lo stesso è anche il caso per Monodroid che è in arrivo, e l'API potrebbe essere facilmente portata su Java.
  • I controllori, le viste e l'intera barra di sistema Monotouch static void main possono essere convertiti molto facilmente in obiettivo-C. I nomi sono tutti identici ma nel caso Pascal.

Per quanto riguarda l'accettazione delle app, finora Apple ha lasciato passare le app Monotouch. Non sto dicendo che non diranno improvvisamente "NO! USERANNO L'OBIETTIVO -C" ma per loro vietare un SO iPhone client su un sito di alto profilo come Stackoverflow sarebbe un cattivo PR.

Apple usa le app nelle loro demo che interrompono il proprio SDK (Tap Tap Revolution è uno), e 1 su 10 dei giochi più venduti nell'app store utilizzano una porzione di salute di none-objective-C.

Monotouch è una mappatura diretta a Cocoa e UIKit. Devi avere un mac per usare il compilatore e l'IDE. Per quanto ne so, Flash non aveva tali restrizioni e la sua interfaccia utente era molto meno rigida in termini di forzare il comune set di "widget" come UINavigationController, UITabViewController, UIAlertView e così via.

+0

Per sicurezza userei Obj-C quindi non corri il rischio di perdere tempo. –

+1

Se fosse stato rifiutato, la parte dell'interfaccia utente sarebbe stata sicuramente una perdita di tempo. Ma i bit per le query potrebbero essere utilizzati in seguito per Winmo e Android –

6

Ecco la mia opinione: se non hai mai visto il codice Obj-C nella tua vita, ci vorrà un po 'di tempo per abituarsi. Mettilo insieme al fatto che l'SDK è completamente diverso e dovrai imparare ogni singolo nuovo metodo, e probabilmente impiegheresti almeno un paio di mesi per diventare uno sviluppatore obj-c medio se studi duramente .

Invece, utilizzare MonoTouch e imparare l'intero SDK utilizzando C#. Tra un paio di settimane ti sentirai come a casa con tutte le classi, Interface Builder, ecc. Sarai in grado di sviluppare l'app come faresti con Obj-C, ma in C#. La versione demo ti consente di utilizzare tutto, gratuitamente.

POI tu decidi cosa fare. A seconda di come va l'intero problema con Apple, potresti decidere di continuare a utilizzare MonoTouch, o potresti decidere di imparare Obj-C, e in pratica utilizzare tutte le conoscenze che hai già acquisito riguardo all'SDK, il che renderà la transizione molto più semplice .