Ist es möglich, das iPhone in C ++ zu programmieren?

124

Ich bin alles für Sprachvielfalt, aber Ziel C ist verrückt. Ich bin also neugierig: Ist es möglich, iPhone-Apps mit C ++ zu codieren, während die Cocoa-API usw. verwendet wird?

Dmitri Nesteruk
quelle

Antworten:

57

Kurze Antwort, ja, irgendwie. Sie können Objective-C ++ verwenden, über das Sie unter Apple Developer Connection lesen können .

Wenn Sie C ++ bereits kennen, wäre das Erlernen von Objective-C ziemlich einfach, wenn Sie sich dazu entschließen würden, es auszuprobieren. Weitere Informationen zu diesem Thema erhalten Sie auch beim ADC.

Robert S.
quelle
1
Können Sie eine Website oder ein Buch empfehlen, die sich an erfahrene C ++ - Programmierer richtet, um Objective-C zu lernen? Ich habe es geschafft, ein paar Test-Apps zusammenzubringen, aber ich finde die Syntax ein wenig rückwärts und ich bin sicher, dass ich Dinge tue, die zu Speicherlecks usw. führen, nur weil ich nicht über Objective-C
informiert
3
@LeaHayes Ein kostenloses Buch mit dem Titel "From C ++ to Objective-C". Angenommen, Sie kennen C ++ und erfahren dann, wie die Dinge in Objective-C anders gemacht werden. pierre.chachatelier.fr/programmation/fichiers/cpp-objc-en.pdf (dies ist eine englische Übersetzung des französischen Originals)
olafure
61

Obwohl Objective-C anfangs tatsächlich "verrückt" zu sein scheint, ermutige ich Sie, daran festzuhalten. Sobald Sie einen "a-ha" Moment haben, macht plötzlich alles Sinn. Für mich dauerte es ungefähr 2 Wochen konzentrierter Objective-C-Konzentration, um die Kakao-Frameworks, die Sprache und wie alles zusammenpasst, wirklich zu verstehen. Aber als ich es wirklich "verstanden" habe, war es sehr, sehr aufregend.

Es klingt klischeehaft, aber es ist wahr. Durchhalten.

Wenn Sie C ++ - Bibliotheken oder vorhandenen C ++ - Code einbringen, können Sie diese Module natürlich mit Objective-C / Objective-C ++ verwenden.

Mitch Haile
quelle
42

Ich benutze Objective-C, um die Benutzeroberfläche zusammenzuschlagen.
Aber der harte Mut des Codes ist immer noch in C ++ geschrieben.

Dies ist der Hauptzweck von Objective-C, der Benutzeroberfläche und der Behandlung der Ereignisse.
Und es funktioniert hervorragend für diesen Zweck.

Ich mag immer noch C ++ als Backend für den Code (aber das liegt hauptsächlich daran, dass ich C ++ mag), dass Sie Objective-C auch ganz einfach für das Backend der Anwendung verwenden können.

Martin York
quelle
9
@Spanky: Wie mache ich was genau. Sie können normales C in die * .m-Datei schreiben. Sie können normales C ++ in * .mm-Dateien (Objective-C ++) schreiben. In Objective-C (++) -Dateien können Sie normale #include <XXX>C / C ++ - Dateien verwenden.
Martin York
28

Zunächst einmal ist es humorvoll zu sagen, dass Objective-C "verrückt" ist. Ich habe das Bjarne Stroustrup C ++ - Buch an meiner Seite, das 1020 Seiten umfasst. Apples PDF zu Objective-C ist 141.

Wenn Sie UIKit verwenden möchten, wird es für Sie sehr, sehr schwierig sein, etwas in C ++ zu tun. Für jede seriöse iPhone-App, die der Benutzeroberfläche von Apple entspricht, müssen die Teile der Benutzeroberfläche in Objective-C geschrieben sein. Nur wenn Sie ein OpenGL-Spiel schreiben, können Sie sich fast ausschließlich an C / C ++ halten.

dnolen
quelle
30
Seit wann war weniger Dokumentation eine gute Sache? "Die C ++ - Programmiersprache" ist sehr gründlich und dokumentiert auch die STL.
Timmmm
2
@Timmmm: Seitdem K & R diesen Punkt in den vorderen Angelegenheiten ihres Buches hervorgehoben hat. Objective-C ist eine viel kleinere Sprache als C ++ mit vielen der gleichen Vorteile (und einigen weiteren). Natürlich ist alles ein Kompromiss. Dank der minimalen Dokumentation ist Obj-C für erfahrene C- (oder C ++) Benutzer recht einfach.
Ben Zotto
62
Entschuldigung, aber ObjC ist verrückt. Das Bestehen auf einer völlig anderen Art der Funktionsdeklaration, die Verwendung von Klammern. Es ist anders ohne Nutzen. Sie hätten dieselbe effektive Sprache ohne die lächerliche Syntax entwerfen können. Sie entschieden sich dagegen. Also ist es verrückt.
Rhabarber
13
@Rhubarb - Obwohl ich Objective-C mag, muss ich zustimmen, dass seine seltsame Syntax keinen Zweck erfüllt.
Raphael
@Rhubarb, Yup, denken Sie daran, Apple ist das Unternehmen, das diesen Wahnsinn erfunden hat, und Apple ist anders, nur um anders zu sein.
SeanRamey
14

Mit etwas Erfahrung können Sie zwar C ++ - Code für Ihren "Kern" -Code verwenden, aber Sie müssen Objective-C für alles verwenden, was für das iPhone spezifisch ist.

Versuchen Sie nicht, Objective-C zu zwingen, sich wie C ++ zu verhalten. Auf den ersten Blick scheint Ihnen dies möglich zu sein, aber der resultierende Code funktioniert mit Cocoa wirklich nicht gut, und Sie werden sehr verwirrt darüber sein, was los ist. Nehmen Sie sich Zeit, um ohne C ++ richtig zu lernen, wie man GUIs und iPhone-Anwendungen erstellt, und verknüpfen Sie dann Ihre C ++ - Basis.

Chris Jefferson
quelle
3

Sie müssen Objective C verwenden, um eine Schnittstelle mit der Cocoa-API herzustellen, sodass Sie keine andere Wahl haben. Natürlich können Sie hinter den Kulissen so viel C ++ verwenden, wie Sie möchten (Objective C ++ macht dies einfach).

Es ist in der Tat eine verrückte Sprache, aber es macht auch ... Spaß, wenn man sich ein bisschen daran gewöhnt hat. :-)

Frederik Slijkerman
quelle
2

Ich bin dabei, eine rechenintensive Android-App, die in Java geschrieben wurde, auf iOS6 zu portieren. Dazu portiere ich die Nicht-UI-Teile von Java nach C ++, schreibe die (minimalen) UI-Teile in Obj-C und verpacke die ersteren mit der Standard-C / C ++ - Technik in eine (kleine) C-Schnittstelle es kann von Obj-C aus zugegriffen werden, das immerhin eine Obermenge von C ist.

Dies war bisher effektiv und ich habe keine Fallstricke festgestellt. Dies scheint ein legitimer Ansatz zu sein, da Sie mit Xcode sowohl C ++ - als auch Obj-C-Klassen erstellen können und ein Teil des offiziellen Beispielcodes dies auf diese Weise tut. Ich musste keine offiziell unterstützten Schnittstellen verlassen, um dies zu tun.

Es scheint nicht viel zu gewinnen, wenn ich meinen verbleibenden UI-Code in C ++ schreibe, selbst wenn dies angesichts der Hilfe des Interface Builders in Xcode möglich wäre. Meine Antwort wäre also, dass Sie C ++ für verwenden können fast Ihre gesamte App oder so viel davon, wie Sie für angemessen / bequem halten.

JulianSymes
quelle
2

Ja, aber zu denken, dass Sie jede Art von Programm in einer einzigen Sprache programmieren können, ist eine fehlerhafte Idee, es sei denn, Sie schreiben sehr einfache Programme. Ziel C ist für Cocoa wie C # für .NET. Verwenden Sie das richtige Tool für den richtigen Job. Der Versuch, C ++ durch Schreiben von Bridging-Code mit Cocoa interagieren zu lassen und zu versuchen, C ++ - Code gemäß den Cocoa-Anforderungen zu verhalten, ist keine gute Idee, und C ++ ist auch nicht zu erwarten Leistung von Ziel C ist. Sie sollten versuchen, das Layout und die Architektur der App unter Berücksichtigung der vorhandenen Fähigkeiten zu gestalten und zu bestimmen, welcher Teil in welcher Sprache geschrieben werden soll, und dann entsprechend erstellen.

Bilal Ahsan
quelle
0

Ich schreibe gerade ein Objective-C ++ - Framework namens Objective-X, das PURE C ++ iPHONE PROGRAMMING ermöglicht. Sie können dies tun:

#import "ObjectiveX.h"

void GUIApplicationMain() {    
    GUIAlert Alert;
    GUILabel Label;
    GUIScreen MainScreen;

    Alert.set_text(@"Just a lovely alert box!");
    Alert.set_title(@"Hello!");
    Alert.set_button(@"Okay");
    Alert.show();

    Label.set_text(@"Ciao!");
    Label.set_position(100, 200, 120, 40);

    MainScreen.init();
    MainScreen.addGUIControl(Label.init());    
}

und kompilieren Sie es mit den entsprechenden Befehlszeilenoptionen von GCC. Ich habe diese helloworld App bereits kompiliert und sie ist wie ein Zauber. ;-) Es wird bald auf GoogleCode verfügbar sein. Suchen Sie nach Objective-X oder besuchen Sie http://infotronix.orgfree.com/objectivex . eine Woche später!

Aktualisierte (aber anscheinend inaktive) URL: http://code.google.com/p/objectivex/

Arpad Goretity
quelle
4
Warum nicht mit dem Posten warten, bis das tatsächlich verfügbar ist?
Georg Fritzsche
8
Beide Links sind jetzt 404
Zhao Xiang
1
Laut SourceForge: "Ab dem 24.01.2014 befindet sich dieses Projekt nicht mehr in der aktiven Entwicklung." sourceforge.net/projects/objectivex
JAL
0

Es mag ein bisschen offtopisch sein, aber trotzdem. Sie können c ++ direkt auf iOS-Geräten programmieren. Schauen Sie sich die CppCode ios App an - http://cppcode.info . Ich glaube, es hilft, später C und C ++ und Objective-C zu lernen.

4ntoine
quelle