Sollte ich native iOS-Entwicklung (Objective-C) lernen oder mein Wissen in Javascript und Titanium Appcelerator perfektionieren? [geschlossen]

8

Im Grunde brauche ich deinen Rat, meine guten Stackfreunde: D

In den letzten sechs Monaten erforsche / lerne / entwickle ich iOS-Apps mit dem mobilen Framework Titanium Appcelerator . Meine Erfahrungen sind meistens gut oder sehr gut.

Einige negative Teile von Titan würden Zeit zum Aufbau bringen, besonders beim Testen auf einem Gerät. Wenn Sie nur Xcode (nativ) verwenden, wird Ihre App sofort auf einem Gerät gestartet, während Sie mit Titanium eine Weile (1-2 Minuten) warten müssen, bis Ihre App sie erstellt und auf einem Gerät installiert hat (iTunes oder iPhone Konfiguration) Nützlichkeit).

Grundsätzlich kann alles, was Sie nativ tun können, mit Javascript + Titanium gemacht werden. Wenn Titanium einen Teil des iOS-Frameworks nicht unterstützt, können Sie ein natives Objective-C-Modul erstellen und diese Funktionen in Ihrem JavaScript-Code verwenden.

Ich fühle mich jetzt sehr wohl mit Titanium Appcelerator und baue Apps mit Javascript. Außerdem habe ich einige Objective-C gelernt, während ich ein paar Module für iOS gebaut habe. Z.B. DeviceMotion , das ich in meiner ersten iOS-App verwendet habe Spellery .

Jetzt die Frage :

Die meisten Unternehmen wollen nur native Entwickler und sind skeptisch gegenüber Titanium. Titanium unterscheidet sich von anderen plattformübergreifenden SDKs (zB PhoneGap), da hier eigentlich native Komponenten (Buttons, Labels etc.) verwendet werden und Ihre App nicht in einem WebView läuft. Aber wenn das Unternehmen nativ sein will, kann man sie nicht dazu zwingen, Titanium zu verwenden.

Da ich gerne mobile Apps als Job entwickeln würde, sollte ich meine letzten sechs Monate intensiv mit der Erforschung von Titanium befassen und lernen, diese Apps nativ zu programmieren?

Was denken Sie darüber, weil ich keinen Sinn darin sehe, beide zu lernen / zu perfektionieren?

Ich bin ein großer Fan von Appcelerator Titanium, also ist das eine sehr schwere Entscheidung.

    
vale4674 27.06.2012, 14:07
quelle

7 Antworten

11

Ehrlich gesagt würde ich immer noch vorschlagen, etwas mehr Objective-C zu lernen. Es ist eine sehr mächtige Sprache, und es wurde entwickelt, um Ihnen viele Dinge zu ermöglichen, die von Apple als notwendig erachtet werden (zB Animation, Persistenz, Datenbanken, MVC). Apple hat ihre Frameworks um Objective-C sehr eng entworfen, und um sie wirklich gut zu nutzen, müssen Sie sie aus ihrer Sprache verwenden. Welche weiteren Sprachen kennst du? Ich fand Objective-C viel einfacher, nachdem ich aus C / C ++ und einer Skriptsprache (Ruby) gekommen bin. Es hängt alles davon ab, wie viel iOSness du in deiner App haben willst. Selbst wenn Titanium den Benutzer dazu bringen kann, sich als iOSy zu fühlen, ist iOSy Code tatsächlich sehr unterhaltsam zu schreiben und zu pflegen. Es kann ein ziemlich schöner Rahmen sein.

    
Linuxios 27.06.2012, 14:12
quelle
6

Ich stimme allem zu, was in früheren Antworten gesagt wurde, und Sie scheinen akzeptiert zu haben, zur hellen Seite zurückzukehren - gute Wahl!

Ich möchte nur hinzufügen: Betrachte diese sechs Monate nicht als Verschwendung. Während Ihrer Zeit mit Titanium haben Sie viele technische Details sowie Möglichkeiten und Einschränkungen von iOS kennen gelernt, die sich als nützlich erweisen sollten, wenn Sie zu Objective-C wechseln.

    
Filip Radelic 27.06.2012 14:58
quelle
6

Ahhhmmmmm ... Ich bin mir nicht sicher, ob meine Antwort von stackoverflow admin entfernt wird. Verzeihen Sie, ich werde ein paar Minuten von Ihnen nehmen, um diese lange Antwort zu lesen (wenn Sie daran interessiert sind, weiter zu lesen).

Ich habe meine eigene Firma im Jahr 2010 gegründet. Wir haben nur auf PHP, MySQL, HTML, JQuery basierenden Webseiten gearbeitet. Als die mobile Plattform mehr Aufmerksamkeit bekam, begannen wir mit der Entwicklung von Sencha Touch + PhoneGap basierten mobilen Apps. Ende 2011 trainierte ich meine 12 Entwickler in Sencha Touch + PhoneGap. Sie können verstehen, wie viel Aufwand es war, ein Team von 12 Entwicklern in einem neuen Framework zu lernen und zu trainieren.

Nachdem wir mehr als zwei Dutzend professionelle PhoneGap-basierte Apps entwickelt haben, haben wir festgestellt, dass es weit von nativen Apps entfernt ist. Nur ein Beispiel reicht aus - Die PhoneGap App benötigte mehr Zeit, um die erste HTML-Seite in die Webansicht zu laden. Ein leerer weißer Bildschirm erschien direkt nach dem Startbildschirm (On Android ist es noch schrecklicher!). In den letzten phonegap Versionen ist es behoben. Aber wer mit phonegap arbeitet, weiß sehr gut, wie weit es von einer echten obj-c App entfernt ist. Wir haben ein Jahr lang im PhoneGap + Sencha Touch Framework gearbeitet.

Wir haben in PhoneGap aufgehört zu arbeiten und lernten & amp; trainiere meine 12 Jungs in Titanium. Ich weiß, wie viel harte Arbeit es war, ein neues Framework von Grund auf neu zu starten. Wir haben 2 Jahre mit Titan gearbeitet, 30 erfolgreiche professionelle Apps aus Titan für iOS und Android entwickelt. Wir haben Experten in der Entwicklung von Titan-Modulen. So haben wir zum Beispiel das Titan-Modul PayPal sowohl für iOS als auch für Android entwickelt. (Sie müssen kichern, was ist daran so toll! Es wurde bereits von Titan-Team entwickelt). Nein, nicht mit der alten MPL-Bibliothek. Wir haben die neueste Paypal sdk 2.8.0 verwendet und es ist kein Modul online verfügbar, das es benutzt.

Mitte 2014 begannen wir mit der Arbeit an einer Tinder / Lovoo Klon-App. Wir haben ein Ti-Modul für ähnliche Animationen entwickelt (durch die Implementierung von UIView drawRect). Alles hat gut funktioniert. Aber wenn es auf dem iPhone läuft, wird das Gerät übermäßig heiß und der Akku auf der Animations-Seite wird stark entladen. Wir haben eine Beispiel-Demo-Xcode-App erstellt und die gleiche Animation angewendet, die in Instruments getestet wurde, alles war in Ordnung. Keine Überlastung des Speichers oder des Prozessors, das Gerät blieb kühl, die Akkuleistung war in Ordnung. Wir haben alles versucht, um es im Titan-Modul besser zu machen und kein Glück. Endlich entdeckt, dass Titan selbst einen enormen Platzbedarf hat, um sein eigenes sperriges Framework zu betreiben und für jede Aktion eine Vielzahl von Proxy-Ereignissen abfeuert und weiterhin auf unnötige Ereignisse lauscht. Komplexe UIView-Animationen machen es verrückt. Es ist nur ein Beispiel - auf Android ist es eine lange Geschichte.

Warum entscheiden sich Unternehmen für Titanium? Die erste Antwort ist, dass es plattformübergreifend ist. Sie kodieren einfach in js und es läuft sowohl auf iOS als auch auf Android. Ha ha .. so ein Witz! Es ist nicht wahr für eine echte professionelle App. Es gibt viele Unterschiede und Bugs in der Android-Version und es ist eine Menge mehr Arbeit auf Android-Version. Und praktisch könnten wir nie eine identische iOS-Codebase-Kopie für Android verwenden. Diese Theorie der Cross-Plattform ist also nur für Klassenprojekte gültig. Wenn Sie nicht glauben, dass ich ein einfaches Titan-Android-Projekt mache, um das Bild aufzunehmen, laden Sie es auf den Server hoch und zeigen Sie es dann erneut vom Server an. Nehmen Sie eine Galaxy S5, machen Sie ein Bild (nicht im Hochformat) im Querformat-Rechts-Modus (Home-Taste auf der rechten Seite), Sie können sehen, die Bildausrichtung wird durcheinander gebracht. Oh! Ich habe vergessen, von Titan Android App, wenn Sie Bild auf Server hochladen, wird die Bild-Erweiterung .txt

In Obj-C UINavigationController Die popToRootViewControllerAnimated-Methode ist eine wichtige Funktion, um zur Startseite zurückzukehren. Diese Methode ist in Titanium nicht verfügbar!

Wir haben Hunderte von zusätzlichen Stunden ausgegeben, um diese Art von peinlichen Problemen zu beheben. Mein Entwicklerteam hatte genug von Titan.

Bestimmt fragst du mich jetzt, warum um Himmels Willen haben wir Obj-C nicht am Anfang angefangen? Die Antwort ist die gleiche von allen Titan-Entwicklern - Javascript ist einfach und Web-Entwickler sind bereits damit vertraut. Das ist ein großer Fehler. Wir nehmen iPhone App als Web-App. Eine Web-App läuft auf einem Web-Browser, speziell auf dem iPhone läuft es innerhalb von Safari. "Safari" selbst ist eine mobile App, und wir erwarten, dass die Webanwendung als ähnliche visuelle Animationen mit der gleichen Geschwindigkeit laufen sollte, was niemals möglich ist. CSS3-Animationen können niemals die gleichen sein wie iOS-Vektor-basierte UIView-Animationen.

iOS ist kein Framework oder eine Bibliothek, es ist ein Betriebssystem. Titanium ist ein Framework, das in Obj-C geschrieben ist. Sie können das Storyboard-UI-Design-Tool von Xcode nicht in Titan verwenden. Xcode-Entwickler wissen, wie sexy die "Constraint" für das UI-Interface-Design ist. Und dieser visuelle Reiz der Verwendung von Constraint fehlt in Titan völlig. Obwohl das Team behauptet, wir können die Constraints mit Ti.UI.FILL / SIZE usw. erstellen. Aber nachdem wir zum nativen Obj-C gewechselt sind, wissen wir, wie mächtig dieses Constraint-System ist!

Ich ziehe mir die Haare aus dem Kopf und bedauere, warum ich Angst hatte, diese Obj-C-Syntax mit eckigen Klammern zu betrachten und auf Titan zurückzuspringen. Es fühlt sich an, als würden Sie Jahrzehnte in der Neuzeit zurücklegen, wenn Sie nur die unbekannte Syntax von Obj-C betrachten. Glücklicherweise ist Swift da und es ist jetzt viel einfacher, in Xcode zu programmieren. Obwohl es einige Zeit brauchen würde, um die vorhandenen populären & amp; leistungsfähige Obj-C-Bibliotheken wie AFNetworking, MBProgressHUD, OpenCV migrierten nach Swift.

Um ehrlich zu sein, glaube ich wirklich, dass die plattformübergreifenden Frameworks Titanium, PhoneGap, Xamarin usw. verboten werden sollten. Ihre Lizenz sollte eingestellt werden. Gibt es in Titan eine zusätzliche Funktion, die in nativem iOS oder Android nicht verfügbar ist? Stattdessen gibt es viel weniger Funktionalität und mehr Fehler. Ich verstehe nicht warum, wie sie auf dieser modernen Technologie die Menschen in die alten Zeiten zurückziehen und niemand sie aufhalten kann! Wie könnte es legal sein, Entwickler in die falsche Richtung zu führen? Wenn iOS 9 "heute" veröffentlicht wird, gibt es Titanium innerhalb der nächsten Woche alle neuen APIs? Noch nie. Sie halten Sie nur zurück und machen Sie gebunden, um ihre begrenzte Reihe von Buggy-APIs zu verwenden, müssen Sie für Module zahlen, die leicht in nativem Code durchgeführt werden können.

Wenn Sie Javascript gut im logischen Sinn gut kennen, glauben Sie mir, dass Sie Obj-C in einer sehr kurzen Zeit lernen können. Zu der Zeit & amp; Wenn Sie Probleme mit dem Debuggen von Titan verlieren, können Sie im nativen Obj-C effizienter arbeiten. Ähm ... über Android werde ich nicht so hoch sagen. Denn Android ist nie mit iOS vergleichbar. iOS wird aus dem Mac OS, einem gut etablierten Desktop-Betriebssystem, geboren. Und Sie wissen über Android.

Fallen Sie nicht in die Falle eines plattformübergreifenden Dilemmas. Viele Titanium-APIs sind nur für iOS, Sie wissen warum, Android-Geräte sind billig, Hardware ist billig, Animationen können nicht reibungslos ausgeführt werden.

Schließlich, bleiben Sie weg von jeder Art von Plattformen und bleiben Sie bei reinem nativen Betriebssystem, egal wie schwer es am Anfang ist, Sie werden auf lange Sicht gut bezahlt, glauben Sie mir!

An das Titanium-Team habe ich Ihren Obj-C- und Java-Quellcode überprüft. Ich respektiere Sie, Sie sind in der Tat sehr viel Experte und sehr erfahren in Obj-C, Java, node.js, Python und Javascript. Aber warum? Warum führst du Leute in die falsche Richtung? Sie wissen sehr gut, wie viel Zeit verschwendet wird, um ein Titan-android-Modul zu bauen und zu testen. Warum bringst du deine Bemühungen nicht in etwas Besseres?

    
Adnan 29.12.2014 10:11
quelle
4

Ich wette, viele andere werden mit Posts zu anderen "doppelten" Fragen und ihren eigenen wütenden Meinungen plaudern. Also überlasse ich es ihnen und stelle nur meine eigenen Erfahrungen zur Verfügung.

Ich denke, es gibt einen guten Grund, beides tief zu kennen. Hier ist warum:

Mit Titan können Sie Apps wirklich schnell erstellen und es wird jeden Tag mehr und mehr solide. Ich habe vor kurzem eine App entwickelt, um die Entwicklungszeiten zwischen Titanium, nativen und einigen Mitbewerber-Frameworks direkt zu vergleichen. Eingeborener war ungefähr anderthalb Wochen. Wettbewerber war ungefähr 2 Wochen. Titan war 3 Tage. Das gab mir eine Menge Zeit, um mit der App zu spielen und ein Produkt viel besser zu machen als die Konkurrenz. Ich konnte es auch auf Android und Mobile Web funktionieren lassen. Ich hatte ungefähr 5 plattformbasierte Bedingungen, also hatte der Code eine gute Parität.

Native hat die Vorteile, die Sie haben. Ich würde hinzufügen, dass Sie auch auf alles zugreifen können, was die Plattform zu bieten hat. Wenn Sie nativ wissen, werden Sie darüber informiert, wie Sie Apps erstellen (selbst wenn Sie JavaScript verwenden) und wie Sie Module für diese Apps erstellen. Sie können auch versuchen, das von Titanium generierte Xcode-Projekt zu öffnen und direkt auf dem Gerät auszuführen. Sie müssen möglicherweise einen sauberen Build (in Xcode) erstellen, aber es ist schneller als durch iTunes zu laufen.

Plus, ich denke, Objective-C ist eine schöne Sprache an und für sich. Es ist sehr verschieden von dem Code, mit dem ich "aufgewachsen" bin (Java, C #, PHP, VB und einige andere). Es hat eine Weile gedauert, sich daran zu gewöhnen, aber ich bin froh, dass ich investiert habe.

Haftungsausschluss: Ich arbeite für Appcelerator. Hoffentlich können Sie Meinungen und Fakten in den oben genannten unterscheiden.

    
Dawson Toth 27.06.2012 14:24
quelle
3

Sehen Sie sich die Stellenausschreibungen an, an denen Sie interessiert sind und die Ihre Frage beantworten sollen. Wenn Arbeitgeber nach XCode-Fachwissen suchen und nicht an Titanium interessiert sind, dann konzentrieren Sie sich auf XCode ...

    
Michael Ballent 27.06.2012 14:12
quelle
3

Hinzufügen zu @ Linuxios ausgezeichnete Antwort:

Da du feststellst, dass du mobile Entwicklung als Karriere betreten möchtest, lerne auf jeden Fall Objective-C, XCode und das iOS SDK. Am Ende liegt es an Ihnen, Ihrem Arbeitgeber und in gewissem Maße an den Bedürfnissen Ihrer Kunden. Aber das Verständnis von iOS ist wichtig.

Wenn die Anwendung kompliziert ist, ist meiner Erfahrung nach auch der native Weg der beste Weg, wenn Sie nicht nur Debuggen möchten, sondern auch kürzere Build-Zeiten.

UPDATE : Eine andere Sache hinzuzufügen, wenn Leistung ist der Schlüssel (d. H. Gaming), dann ist native (C / C ++ / Objective-C) der Weg zu gehen.

    
Mike D 27.06.2012 14:21
quelle
1

Aus meiner Sicht ist es immer sehr nützlich, die native App-Entwicklung zu lernen, sowohl iOS als auch Android. Wie Sie bereits erwähnt haben, suchen die meisten Unternehmen nach nativen App-Entwicklern, da sie sich nicht zu sehr von externen Unternehmen oder Frameworks abhängig machen wollen, abgesehen von den eigentlichen Entwicklern der Plattform (Android, iOS und so weiter). Ich denke auch, sobald Sie native Apps entwickeln können, ist es einfacher als ein Framework wie Titanium oder PhoneGap. Außerdem ist es immer gut, seine eigenen Fähigkeiten zu verbessern und insbesondere ist die native App-Entwicklung ein Bereich, in dem man viel lernen kann. Nicht nur über die Sprache, sondern auch über die Architektur des zugrunde liegenden mobilen Betriebssystems. Und insbesondere für Apple ist es wichtig zu lernen, nativ zu entwickeln. Sie haben sehr gute Ressourcen auf ihrem Entwicklerportal und dort lernen Sie auch viel über das beabsichtigte Benutzerinteraktionsdesign.

Last but not least würde ich Ihnen empfehlen, mit Swift fortzufahren. Es ist eine großartige und mächtige Sprache, die viele Schwachpunkte von Objective-C beseitigt. Grundsätzlich können Sie mit Swift beginnen, ohne Objective-C zu verwenden. Die komplette Cocoa-API ist über Swift erreichbar. Aber wenn du willst, kannst du noch Objective-C und Swift kombinieren. Zum Beispiel, wenn Sie eine externe Bibliothek verwenden müssen, die noch nicht in Swift implementiert ist.

Ich hoffe, ich könnte Ihnen ein wenig helfen.

    
fr33g 29.12.2014 10:26
quelle