Ahhhmmmm ... Non sono sicuro se la mia risposta verrà rimossa dall'amministratore di StackOverflow. Perdonami, prenderò alcuni minuti della tua lettura di questa lunga risposta (se sei interessato a continuare a leggere).
Ho iniziato la mia azienda nel 2010. Abbiamo lavorato solo su siti web php, mysql, html e jquery. Mentre la piattaforma mobile stava ottenendo più attenzione, abbiamo iniziato a lavorare su app mobili Sencha Touch + PhoneGap. Alla fine del 2011, ho formato i miei 12 sviluppatori in Sencha Touch + PhoneGap. Puoi capire quanto impegno sia stato di imparare e formare un team di 12 sviluppatori in un nuovo framework.
Dopo aver sviluppato più di due dozzine di app basate su PhoneGap professionali ci siamo resi conto che è molto lontano dalle app native. Basta un solo esempio: l'app PhoneGap impiega più tempo a caricare la pagina html iniziale nella webview. Una schermata bianca vuota è apparsa subito dopo la schermata iniziale (su Android è più orribile!). Nelle ultime versioni di PhoneGap è stato risolto. Ma chi sta lavorando con PhoneGap sa molto bene quanto sia lontano dalla vera app di obj-c.Abbiamo lavorato nel framework PhoneGap + Sencha Touch per un anno.
Abbiamo smesso di funzionare in PhoneGap e ho iniziato a studiare & allenando i miei 12 ragazzi in titanio. So quanto sia stato duro lavorare per iniziare un altro nuovo framework da zero. Abbiamo continuato a lavorare con il titanio per 2 anni, abbiamo sviluppato oltre 30 applicazioni professionali di successo in titanio sia per iOS che per Android. Siamo diventati esperti nello sviluppo di moduli in titanio. Solo per esempio abbiamo sviluppato il modulo di titanio PayPal su iOS e Android. (Devi ridacchiare, cosa c'è di così bello! È già stato sviluppato dal team di titanio). No, non usare la vecchia libreria MPL. Abbiamo utilizzato l'ultimo sdk 2.8.0 di Paypal e non è disponibile alcun modulo online.
A metà 2014 abbiamo iniziato a lavorare su un'app di tipo clone Tinder/Lovoo. Abbiamo sviluppato un modulo ti per animazioni simili (implementando UIView drawRect). Tutto andava bene. Ma quando viene eseguito su iPhone, il dispositivo diventa eccessivamente caldo e la batteria si scarica drasticamente nella pagina di animazione. Abbiamo creato un'app di Xcode dimostrativa di esempio e applicato la stessa animazione, testata su Instruments, tutto andava bene. Nessun sovraccarico su memoria o processore, il dispositivo è rimasto freddo, le prestazioni della batteria andavano bene. Abbiamo provato in ogni modo possibile per renderlo migliore nel modulo in titanio e senza fortuna. Infine, lo stesso titanio scoperto prende un'impronta enorme per far funzionare la propria struttura voluminosa e per ogni azione, spara un sacco di eventi proxy e continua ad ascoltare eventi non necessari. Le complesse animazioni di UIView rendono folle. È solo un esempio: su Android è una lunga storia.
Perché le aziende decidono di utilizzare il titanio? La prima risposta è che è multipiattaforma. Basta codificare in js e funziona sia su iOS che su Android. Ah ah .. un tale scherzo! Non è vero per una vera app professionale. Ci sono molte differenze e bug nella versione di Android ed è un carico di lavoro in più sulla versione di Android. E praticamente non potremmo mai utilizzare una copia esatta della stessa base di codice iOS per Android. Quindi quella teoria della multipiattaforma è vera solo per i progetti di classe. Se non mi credi, crea un semplice progetto Android in titanio per acquisire l'immagine, caricala sul server e poi visualizzala di nuovo dal server. Prendi una galassia S5, scatta una foto (Non in modalità verticale) in modalità orizzontale-destra (tasto home sul lato destro), puoi vedere che l'orientamento dell'immagine è rovinato. Oh! Dimenticavo, dall'app android di titanium se carichi l'immagine sul server, l'estensione dell'immagine diventa .txt
In Obj-C UINavigationController popToRootViewController Un metodo stimato è una funzionalità fondamentale per tornare alla pagina iniziale. Questo stesso metodo non è disponibile in Titanium!
Abbiamo speso centinaia di ore in più per risolvere questo tipo di problemi scomodi. Il mio team di sviluppo si è stufato del titanio.
Definitivamente mi chiederete ora, perché mai all'inizio non abbiamo avviato Obj-C? La risposta è la stessa di tutti gli sviluppatori di titanio: Javascript è semplice e gli sviluppatori web lo conoscono già. Questo è un grosso errore. Prendiamo l'app per iPhone come app web. Un'app Web viene eseguita su un browser Web, in particolare su iPhone che viene eseguito all'interno di Safari di iPhone. "Safari" è di per sé un'app mobile e ci aspettiamo che l'applicazione web debba funzionare come animazioni visive simili con lo stesso ritmo, il che non è mai possibile. Le animazioni CSS3 non possono mai essere le stesse animazioni UIView basate su vettori iOS.
iOS NON è un framework o una libreria, è un sistema operativo. Il titanio è un framework che è scritto in Obj-C. Non è possibile utilizzare lo strumento di progettazione dell'interfaccia utente di Xcode Storyboard in titanio. Gli sviluppatori Xcode sanno quanto sia sexy il "vincolo" per la progettazione dell'interfaccia utente. E questo richiamo visivo all'utilizzo del vincolo è totalmente assente in Titanium. Sebbene ti stia affermando che possiamo fare le cose con vincoli usando Ti.UI.FILL/SIZE ecc. Ma dopo esserci spostati in Obj-C nativo sappiamo quanto è potente questo sistema di vincoli!
Mi tiro fuori i capelli e rimpiango perché mi sono spaventato a guardare quelle sintassi Obj-C con parentesi quadre e sono tornato al titanio.Sembra che tu stia tornando indietro di decenni nell'età moderna, osservando la sintassi non familiare di Obj-C. Fortunato che Swift sia lì ed è ora molto più facile codificare in Xcode. Anche se sarebbe necessario del tempo per ottenere le famose librerie Obj-C più famose, come AFNetworking, MBProgressHUD, OpenCV migrate a Swift.
Per essere onesti, sento davvero che i framework in cross-platform Titanium, PhoneGap, Xamarin ecc. Dovrebbero essere vietati. La loro licenza dovrebbe essere cessata. Il titanio ti offre funzionalità aggiuntive che non sono disponibili in iOS o Android nativi? Invece, ci sono molto meno funzionalità e più bug. Non capisco perché, come su questa moderna tecnologia all'avanguardia stanno riportando la gente ai vecchi tempi e non c'è nessuno che li fermi! Come potrebbe essere legale guidare gli sviluppatori nella direzione sbagliata? Se iOS 9 viene rilasciato "oggi", Titanium ti fornirà tutte le nuove API entro la prossima settimana? Mai. Ti tengono semplicemente indietro e ti obbligano a usare il loro set limitato di API buggy, devi pagare per i moduli, che possono essere fatti facilmente nel codice nativo.
Se conosci bene javascript, in senso logico, credimi, puoi imparare Obj-C in un tempo molto breve. Nel momento in cui gli sforzi di & si perderebbero i problemi di debug in titanio, è possibile diventare più efficienti nell'Obj-C nativo. Ummm .. su Android non dirò che in alto. Perché Android non è mai paragonabile a iOS. iOS nasce da Mac OS, un sistema operativo desktop consolidato. E tu sai di Android.
Non cadere nella trappola del dilemma cross-platform. I carichi delle API di Titanium sono solo per iOS, sai perché, i dispositivi Android sono economici, l'hardware è economico, non è possibile eseguire animazioni senza problemi.
Infine, stare lontano da qualsiasi tipo di piattaforma e attenersi al puro sistema operativo nativo, non importa quanto sia difficile all'inizio, sarete a lungo pagati, credetemi!
Per il team di titanio, ho esaminato il codice sorgente Obj-C e Java. Rispetto voi ragazzi, siete davvero molto esperti e ben esperti in Obj-C, Java, node.js, python e javascript. Ma perché? Perché stai portando le persone nella direzione sbagliata? Sai molto bene quanto tempo è sprecato per costruire un modulo android/ios in titanio e testarlo. Perché non metti i tuoi sforzi in qualcosa di meglio.
Le mie prime lingue che utilizzo sono Java e Javascript. Ho imparato un sacco di Javascript mentre imparavo Titanium e leggendo alcuni buoni articoli/libri. Penso che Objective-C sia buono e sta diventando sempre più popolare (6.nella lista delle lingue più popolari). – vale4674
@ vale4674: Hm. Sfortunatamente, nessuno di questi ha nulla a che fare con Objective-C. Ma questo non è uno spettacolo, basta essere pronti per imparare un insieme completamente diverso di principi OOP. Objective-C è in realtà C + Smalltalk (o qualsiasi dei suoi discendenti). – Linuxios
Conosco C (era la mia prima lingua che ho imparato insieme a Pascal) ma non l'ho usato per molto tempo. Objective-C è interessante da imparare e io redico un libro di Stephen G. Kochan [Programming in Objective-C] (http://www.amazon.com/Programming-Objective-C-Edition-Developers-Library/dp/0321711394/ ref = pd_sim_b_1) e comunque ho deciso di sviluppare con JS e Titanium. Ho anche guardato alcune presentazioni di Stanford su iTunesU sullo sviluppo di app iOS. Anche se non sono un principiante assoluto con Objective-C, ci vorrà del tempo per impararlo bene a sentirsi a proprio agio con esso. – vale4674