Sollte ich lernen, native iOS Entwicklung (Objective-C) oder perfekt meine Kenntnisse in Javascript und Appcelerator Titanium?
Im Grunde brauche ich deinen Rat, mein guter stack Freunde 😀
Für die letzten sechs Monate, die ich bin, zu erforschen/zu lernen/entwickeln von iOS-apps mit Titanium Appcelerator mobile framework. Meine Erfahrungen sind überwiegend gut oder sehr gut.
Einige negative Teile von Titan wäre, Bauzeit, vor allem beim testen auf einem Gerät. Wenn Sie nur Xcode (native) app startet sofort auf einem Gerät, während mit Titan-Sie müssen warten, für eine Weile (1-2 Minuten) für Ihre app zu erstellen und dann installieren Sie es auf einem Gerät (iTunes oder iPhone Configuration Utility).
Im Grunde alles, was, die Sie tun können nativ kann man mit Javascript + Titan. Wenn Titan nicht unterstützen, Teil von iOS-framework, können Sie bauen eine native Objective-C-Modul und habe diesen Funktionen in Ihrem Javascript-code.
Ich fühle mich richtig wohl jetzt mit Titanium Appcelerator und der Erstellung von apps mit Javascript. Auch lernte ich einige Objective-C, während Gebäude ein paar Module für iOS. ZB. DeviceMotion welche ich in meine erste iOS-app Spellery.
Jetzt die Frage:
Meisten Unternehmen, will nur native Entwickler und sind skeptisch Titan. Titan unterscheidet sich von anderen cross-Plattform-SDKs (ZB. PhoneGap), weil hier tatsächlich von Ihnen verwendeten nativen Komponenten (buttons, labels etc) und Ihre app nicht ausgeführt wird in einem WebView. Aber wenn die Gesellschaft will, native, dann können Sie nicht zwingen, zu verwenden Titan.
Da würde ich gerne die Entwicklung von mobilen apps als einen job, sollte ich werfe gerade meine letzten sechs Monaten intensiver Erkundung von Titan und lernen die Programmierung dieser apps nativ?
Was sind Ihre Gedanken auf das, weil ich sehe keinen Sinn im lernen/perfektionieren beides?
Bin ich ein sehr großer fan von Appcelerator Titanium jetzt also dies ist eine sehr schwere Entscheidung zu treffen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ehrlich gesagt, ich würde noch vorschlagen, das lernen ein paar mehr Objective-C. Es ist eine sehr mächtige Sprache, und es ist so konzipiert, dass Sie viele Dinge, die Apple vertritt die Auffassung, Notwendigkeiten viel leichter (zB. Animation, Persistenz, Datenbanken, MVC). Hat Apple entworfen, die Rahmenbedingungen rund um Objective-C sehr eng, und wirklich nutzen Sie auch, müssen Sie Sie aus Ihrer Sprache. Auch, welche anderen Sprachen kennt Ihr? Ich fand Objective-C viel einfacher nach, die von C/C++ und einer Skript-Sprache (Ruby). Aller es wirklich hängt davon ab, wie viel iOSness Sie möchten in Ihrer app. Auch Titan kann den Nutzer am Ende fühlen iOSy, iOSy code ist eigentlich wirklich Spaß zu schreiben und zu verwalten. Es kann durchaus einen schönen Rahmen.
Ich mit allem einverstanden, sagte in früheren Antworten, und Sie scheinen angenommen haben, wieder auf die helle Seite - gute Wahl!
Möchte ich nur Folgendes hinzufügen: schauen Sie nicht auf die sechs Monate verschwendet. Während Ihrer Zeit mit der Titan, Sie haben gelernt, eine Menge von technischen details, sowie die Möglichkeiten und Grenzen der iOS und das sollte sich als nützlich erweisen, wenn Sie wechseln Sie zu Objective-C.
Ahhhmmmm... ich bin mir nicht sicher, ob meine Antwort ist gelöscht, die von stackoverflow admin. Verzeihen Sie mir, ich werde ein paar Minuten dauern, von Euch zu Lesen dieses langen Antwort (wenn Sie interessiert sind, Lesen Sie weiter).
Gründete ich meine eigene Firma im Jahr 2010. Wir arbeiteten auf php, mysql, html, jquery-basierte Seiten nur. Als mobile Plattform wurde immer mehr Aufmerksamkeit wir damit begonnen, auf Sencha Touch + PhoneGap-basierten mobilen apps. Ende 2011, ich trainierte meine 12 Entwickler in Sencha Touch + PhoneGap. Können Sie verstehen, wie viel Aufwand es war, zu lernen und zu trainieren, ein team von 12 Entwicklern in einen neuen Rahmen.
Nach der Entwicklung von mehr als zwei Dutzend professionelle PhoneGap-basierten apps, die wir realisiert, es ist weit Weg von nativen apps. Nur ein Beispiel ist genug - PhoneGap-app hat mehr Zeit zum laden der ersten html-Seite in der webview. Ein leerer weißer Bildschirm erschien nur nach dem splash-screen (Auf android ist es schlimmer!). In den letzten phonegap-Versionen behoben. Aber wer sind die Arbeit mit phonegap wissen sehr gut, wie weit ist es von realen obj-c app. Wir arbeiteten in PhoneGap+Sencha Touch framework für ein Jahr.
Hielten wir arbeiten in PhoneGap und begann learning & training meine 12 Jungs in Titan. Ich weiß, wie viel harte Arbeit es war zu Beginn ein weiteres neues framework von Grund auf. Wir hielten auf die Arbeit mit Titan-2 Jahre, entwickelt, 30+ erfolgreiche Profi-apps in titanium für iOS und Android. Wir haben Experten in der Entwicklung von Titan-Module. Zum Beispiel entwickelten wir PayPal Titan-Modul auf beiden iOS und Android. (Sie muss kichern, was ist so toll darüber! Es ist bereits entwickelt, vom Titan-team). Nein, nicht die alte MPL-Bibliothek. Wir haben die neuesten Paypal sdk 2.8.0 und es ist kein Modul verfügbar online unter Verwendung es.
Mitte 2014 haben wir angefangen, einen Zunder/Lovoo-Klon-Typ-app. Wir entwickelten ein ti-Modul für ähnliche Animationen (durch die Umsetzung von UIView drawRect). Hat alles gut funktioniert. Aber wenn es laufen auf dem iPhone, das Gerät wurde sehr heiß und der Akku entleert sich dramatisch auf der animation-Seite an. Wir erstellt eine Beispiel-demo Xcode app und angewendet die gleiche animation, getestet und Instrumente, alles war in Ordnung. Keine überlast auf Speicher oder Prozessor, Gerät blieb cool, Akku-Leistung war in Ordnung. Wir haben versucht, jede mögliche Weise, es besser zu machen in Titan-Modul und kein Glück. Schließlich entdeckte Titan selbst nimmt riesigen Fußabdruck zu betreiben es selbst sperrige Rahmen und für jede Aktion, feuert Sie eine Menge von proxy-Veranstaltungen und hält auf hören für unnötige Ereignisse. Komplexe UIView-Animationen macht es verrückt. Es ist nur ein Beispiel - auf android-es ist eine lange Geschichte.
Warum Unternehmen sich entscheiden, zu verwenden Titan? Die erste Antwort ist: es ist cross-Plattform. Sie nur code in js und es läuft auf beiden iOS und Android. Ha Ha.. so ein Witz! Es ist nicht wahr, für eine wirklich professionelle app. Es gibt viele Unterschiede und bugs auf Android-version und es ist eine Last von mehr Arbeit auf android-version. Und praktisch könnten wir niemals einen gleichen iOS codebase exakte Kopie für Android. So, die Theorie der cross-Plattform gilt nur für die Klasse Projekte. Wenn Sie mir nicht glauben, machen Sie eine einfache, Titan-android-Projekt zu erfassen, Bild, laden Sie Sie auf server und dann wieder vom server. Nehmen Sie ein galaxy S5, ein Bild (Nicht im hochformat) in Querformat-rechts-Modus (home-Taste auf der rechten Seite), können Sie die Ausrichtung der Bilder Durcheinander gebracht. Oh! Ich habe vergessen, aus Titan-android-app, wenn Sie Bild hochladen auf dem server der Bild-Erweiterung wird .txt
In Obj-C UINavigationController popToRootViewControllerAnimated Methode ist eine wichtige Funktionalität, um navigieren Sie zurück zur Startseite. Diese Methode ist nicht verfügbar in Titan!
Verbrachten wir Hunderte von zusätzlichen Stunden zu beheben, diese Art von unangenehme Themen. Mein dev-team habe genug mit Titan.
Jeden Fall, du wirst mich nun Fragen, warum wir auf Erden nicht zu starten, Obj-C am Anfang? Die Antwort ist dieselbe von allen die Titan-Entwickler - Javascript ist einfach und web-Entwickler sind bereits damit vertraut. Dies ist ein großer Fehler. Wir nehmen die iPhone-app als web-app. Eine web-app läuft auf einem web-browser, mehr speziell auf dem iPhone, es läuft in iPhone Safari. "Safari" ist eine mobile app, und wir erwarten, dass die web-Anwendung ausgeführt werden soll, da es ähnliche visuelle Animationen mit dem gleichen Tempo, das ist niemals möglich. CSS3-Animationen könnte nie derselbe sein wie der iOS-Vektor-basierte UIView-Animationen.
iOS ist NICHT ein framework oder eine Bibliothek, es ist ein Betriebssystem. Titanium ist ein framework, geschrieben in Obj-C. können Sie nicht mit Xcode Storyboard UI-design-tool in Titan. Xcode Entwickler wissen, wie sexy ist der "Zwang" ist für die UI-interface-design. Und diese Optik mit Hilfe von constraint-völlig fehlt in Titan. Obwohl ti team behaupten, wir können tun, um die Einschränkungen Stoffe mithilfe von Ti.UI.FÜLLEN/GRÖßE etc. Aber nachdem wir umgezogen sind, um native Obj-C wissen wir, wie mächtig diese constraint-system ist!
Ich zieh gerade meine Haare aus und bedauern, warum ich Angst bekam einen Blick auf diese Obj-C syntax mit eckigen Klammern und sprang zurück zur Titan. Es fühlt sich an wie Sie gehen Jahrzehnte zurück in die moderne, den Blick auf die ungewohnte syntax von Obj-C. Glück, dass der Swift ist es, und es ist jetzt viel einfacher ist, code in Xcode. Obwohl es würde einige Zeit brauchen, um die vorhandenen beliebte & leistungsstarke Obj-C Bibliotheken wie z.B. AFNetworking, MBProgressHUD, OpenCV migriert Swift.
Um ehrlich zu sein, habe ich wirklich das Gefühl, Titanium, PhoneGap, Xamarin etc cross-Plattform-frameworks sollte verboten werden. Ihre Lizenz sollte aufgehört werden. Ist Titan geben Sie keine zusätzliche Funktion, die nicht verfügbar ist in native iOS-oder Android? Stattdessen gibt es so viel weniger Funktionalität und mehr bugs. Ich verstehe nicht, warum, wie auf das moderne bleeding edge-Technologie, die Sie sind, ziehen die Menschen wieder in alten Tagen und es ist niemand, Sie zu stoppen! Wie könnte es legal sein, leiten Entwickler falsche Richtung? Wenn iOS 9 veröffentlicht wird "heute" Titan-geben Sie alle von der neuen APIs in der nächsten Woche? Nie. Sie halten sich nur zurück und machen Sie gebunden sind, nutzen Ihre begrenzten Satz von buggy-APIs, die Sie benötigen, bezahlen für die Module, die leicht getan in native code.
Wenn Sie wissen, javascript-gut, gute Logik, Sinn, glauben Sie mir, Sie können lernen, Obj-C in einer sehr kurzen Zeit. Durch den time & Anstrengungen, die Sie verlieren würden, debugging Titan Fragen haben, können Sie effizienter im einheitlichen Obj-C. Ähmm.. über android-ich will nicht sagen, dass hoch. Cos Android ist nie vergleichbar mit iOS. iOS ist geboren aus der Mac-OS, einem gut etablierten desktop-Betriebssystem. Und Sie wissen über android.
Nicht in die Falle der cross-Plattform-dilemma. Lasten von Titan-APIs für iOS nur, wissen Sie, warum Android-Geräte sind Billig, die hardware ist Billig, kann nicht laufen Animationen flüssig.
Schließlich bleiben Weg von jeder Art von Plattformen und stick rein native OS, egal, wie schwer es ist, in den Anfang, Sie werden gut bezahlt auf lange Sicht, glauben Sie mir!
Die Titan-team, ich überprüft Ihre Obj-C und Java-source-code. Ich respektiere Euch, Sie sind in der Tat sehr viel-Experte und erfahren in Obj-C, Java, node.js, python und javascript. Aber warum? Warum sind Sie die führenden Leute in die falsche Richtung? Sie wissen sehr gut, wie viel Zeit verschwendet zu bauen, Titan-android/ios-Modul und testen Sie es.
Warum gehst du nicht setzen Sie Ihre Bemühungen in etwas besser.
cross-platform
bedeutet - können verwendet werden, auf verschiedene Arten von OS. Aber iOS nicht alle Funktionen von Android hat und Umgekehrt. Zum Beispiel goo.gl/tIb29K die Split Windwo ist verfügbar für iOS, nicht für android titanium-api. Mit nativen Android-Java können Sie es erreichen durch die Verwendung von Fragmenten. Fragment ist nur für Android-Konzept, iOS hat es nicht! Wie kann man dann erwarten, dass etwas in der cross-Plattform, wenn Sie nicht wirklich existieren in beiden nativen Plattform! Es gibt Hunderte von unterschieden zwischen verschiedenen Plattformen wie können Sie vereinen, Sie alle? Unmöglich für komplexe apps!Ich Wette, viele andere werden chime in with posts zu anderen "doppelten" Fragen, und Ihre eigenen wütenden Meinungen. Also werde ich verlassen, dass Sie, und nur meine eigene Erfahrung.
Ich denke, es gibt guten Grund zu wissen, beide tief. Ist hier, warum:
Titan ermöglicht Sie die Entwicklung von apps sehr schnell, und es wird immer mehr und mehr solid-jeden Tag. Ich habe vor kurzem gebaut ein app direkt miteinander zu vergleichen und Entwicklungszeiten zwischen Titan, native, und ein paar Konkurrenten-frameworks. Native war etwa eine Woche und eine Hälfte. Konkurrent war über 2 Wochen. Titan war 3 Tage. Das gab mir eine ganze Menge Zeit zum spielen mit der app und machen Sie einen Produkt eine ganze Menge besser als die Konkurrenten. Ich war auch in der Lage, um es arbeiten genauso gut auf Android und Mobile Web. Hatte ich etwa 5 Plattform-basierte Bedingungen, so musste der code gut Parität.
Native hat die Vorteile, die Sie brachte. Ich möchte hinzufügen, dass Sie können auch auf, was die Plattform zu bieten hat. Das wissen einheimische darüber informieren, wie Sie apps erstellen (auch wenn Sie mit JavaScript), und wie Sie bauen Module für die apps. Sie könnten auch versuchen, öffnen Sie die Xcode-Projekt heraus, dass sich Titan erzeugt, und läuft direkt auf dem Gerät durch, die. Sie möglicherweise tun müssen, um eine saubere erstellen (in Xcode), aber es ist schneller als das laufen über iTunes.
Plus, ich glaube, die Objective-C ist eine schöne Sprache, die in und von sich selbst. Es ist sehr Verschieden von dem code, den ich "wuchs" mit (Java, C#, PHP, VB, und einige andere). Es dauerte eine Weile, sich daran zu gewöhnen, aber ich bin froh für die Zeit, die ich investiert.
Disclaimer: ich arbeite für Appcelerator. Hoffentlich können Sie unterscheiden, Meinungen und Fakten in der oben genannten.
Blick auf Stellenausschreibungen, die Sie interessieren, und das sollte Ihre Frage beantworten. Wenn Arbeitgeber suchen, XCode know-how und kein Interesse an Titan dann konzentrieren sich auf XCode...
Hinzufügen @Linuxios ausgezeichnete Antwort:
Da Sie Land, das Sie eingeben möchten, mobile Entwicklung, als eine Karriere, dann die meisten auf jeden Fall lernen, Objective-C, XCode und das iOS SDK. Am Ende werden es bis zu Ihnen, Ihrem Arbeitgeber und zu einem gewissen Grad, Ihre Kunden Bedürfnisse. Aber verstehen, iOS ist wesentlich.
Auch, meiner Erfahrung nach, wenn die Anwendung kompliziert ist, native wäre der Weg zu gehen, wenn für nother Grund als einfache debugging, und als Sie Stand, kürzere Anlaufzeiten.
UPDATE:
Eine andere Sache zu fügen, wenn die Leistung ist der Schlüssel (also Spiele), dann ist native (C/C++/Objective-C) ist der Weg zu gehen.
Aus meiner Sicht ist es immer sehr nützlich, um zu lernen, native app Entwicklung, iOS sowie Android. Wie du bereits erwähnt hast, haben die meisten Unternehmen suchen für native app-Entwickler, da Sie nicht wollen, zu verlassen, zu sehr auf externe Unternehmen oder frameworks, andere als die tatsächlichen Entwickler der Plattform (Android, iOS und so weiter). Ich denke auch, sobald Sie in der Lage sind, die Entwicklung von nativen apps, es ist viel einfacher, als die Verwendung eines Frameworks wie Titanium oder PhoneGap. Außerdem ist es immer gut, verbessern Sie Ihre eigenen Fähigkeiten und insbesondere native app Entwicklung ist ein Feld, wo Sie eine Menge lernen können. Nicht nur über die Sprache, sondern auch über die Architektur des zugrunde liegenden Betriebssystems für mobile Geräte. Und insbesondere für Apple, ich denke, es ist wichtig zu lernen, zu entwickeln native. Sie haben sehr gute Ressourcen in Ihrem developer-portal und dort lernen Sie auch viel über die geplante user-interaction-Designs.
Last but not least, ich würde Ihnen empfehlen, gehen Sie mit Swift. Es ist eine große und mächtige Sprache, Behebung vieler Objective-C, die schwachen Punkte. Grundsätzlich können Sie beginnen Grund auf mit Swift, ohne die Notwendigkeit von Objective-C. Die komplette Cocoa-API ist zugänglich über Swift. Aber wenn Sie möchten, können Sie noch kombinieren Objective-C und Swift. Zum Beispiel, wenn Sie brauchen, um eine externe Bibliothek, die nicht implementiert Swift noch.
Hoffe, ich konnte Euch ein wenig helfen.