C vs C++ (Objective-C vs Objective-C++) für iPhone
Ich würde gerne eine portable Bibliothek für das iPhone, das könnte auch verwendet werden für andere Plattformen.
Meine Frage ist die Stilllegung:
Wer weiß, was das beste für die Verwendung auf dem iPhone: Objective-C oder Objective-C++? Funktioniert es mit C++ die gleiche Weise wie in Objective-C mit C oder nicht?
Gründe: Objective-C ist eine Obermenge von C, aber Objective-C++ is not
eine Obermenge von C++.
Vielen Dank im Voraus!
UPDATE:Was über die Speicherauslastung, Geschwindigkeit in der gleichen Umsetzung eines use-case?
UPDATE1: Wenn jemand irgendwelche weitere Informationen, dann wäre er willkommen.
InformationsquelleAutor der Frage mxg | 2009-11-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie nicht wirklich verschiedene Sprachen. Objective-C++ ist nur Objective-C mit etwas begrenzte Unterstützung, einschließlich der C++ - code. Objective-C ist der standard-Dialekt, aber, wenn Sie brauchen, um die Arbeit mit C++, es gibt keinen Grund, es nicht zu verwenden. AFAIK, der größte praktische Unterschied (abgesehen von ermöglicht die Verwendung von verschiedenen Bibliotheken) ist, dass Objective-C++ scheint zu kompilieren etwas langsamer. Nur sicher sein, Lesen Sie zuerst, wenn Sie sich entscheiden, diesen Weg gehen, weil die Verschmelzung von C++ und Objective-C ist nicht zu 100% nahtlos ist.
InformationsquelleAutor der Antwort Chuck
Wenn Sie schreiben eine tragbare Bibliothek, und brauchen nicht die spezifischen Funktionen der Sprache für Sie, warum es nicht schreiben gerade C? Es kann leicht von C++, C, Objective-C, und viele, viele andere Sprachen.
Wenn Sie erfordern, dass bestimmte Funktionen der Sprache, die nicht in C, Sie sollten uns sagen, was Sie sind, so können Sie besser beraten =)
InformationsquelleAutor der Antwort Stephen Canon
Ich glaube, dass Ihre Informationen falsch sind. Objective-C++ ist eine Obermenge von C++. C++ ist legal Objective-C++. Darüber hinaus können Sie mischen Objective-C-und C++ - code in Objective-C++ (in der Regel .mm) - Datei und (mit einigen Einschränkungen), mix-Objective-C-und C++ - Klassen-Instanz-Variablen innerhalb einer Objective-C++ - Klasse. Objective-C++ ist besonders nützlich für die Kopplung zwischen Objective-C und eine C++ - Bibliothek. Schreiben Sie Ihre cross-Plattform-Bibliothek in C++. Sie können dann nennen Sie es von Objective-C++ in einer Anwendung. Re-Lesen Sie die Objective-C++ Abschnitt von Objective-C Anleitung für mehr info.
Den großen Nachteil mit Objective-C++ ist eine erhöhte compile-Zeiten (Objective-C++ ist sogar noch schlimmer als C++ und Clang LLVM compiler nicht verarbeitet Objective-C++ noch nicht). Es gibt keine performance-Unterschied zwischen Objective-C und Objective-C++ - jenseits aller Unterschiede in den Codes, die aufgerufen wird (z.B. wenn Sie eine bessere C++ dev., C++ wird wahrscheinlich effizienter sein, als Ihre C-Bibliothek und Umgekehrt).
InformationsquelleAutor der Antwort Barry Wark
Wenn Sie diese Bibliothek verwenden, auf anderen Plattformen als das iPhone und Mac OS, sollten Sie die Verwendung von C++. Wenn Sie planen, nur für die Portierung auf Mac OS, dann gehen Sie vor und verwenden Objective-C. Objective-C++ ist nur ein Weg, um die Integration bestehender C++ - code in Objective-C-Projekte. Also, Sie würde nicht schreiben eine Bibliothek. Sie können jedoch, verwenden Sie Objective-C++ zu verwenden, diese Bibliothek von einem iPhone oder Mac-Projekt.
InformationsquelleAutor der Antwort Jonathan Sterling
Die Wahrheit ist, können Sie mit C oder C++ unter Xcode. Der Grund für die Verwendung von Objective-C für Cocoa und Cocoa Touch (iphone) ist wegen seiner Benutzerfreundlichkeit und wie es verarbeitet viele der Speicher Probleme, die Sie zu kommen würde. Objective-C und Xcode arbeiten Sie wie ein Traum. Ich würde auch empfehlen, Check-out http://www.kevincallahan.org/software/accessorizer.html
Accessorizer ist erstaunlich, und schneidet die Entwicklung der Zeit in nichts auf.
Gesagt haben, dass sehe ich kein problem in schreiben von Funktionen/Methoden in C oder C++ und verwenden diese innerhalb eines Teil Ihres XCode-Projekts. Nur nicht erwarten, Objektive-C zu spielen, wie schön auf andere Plattformen. Apple-und Windows-Entwicklung IDE ' s sind unterschiedlich und Microsoft hat eine nette Gewohnheit nicht, die Dinge als kompatibel mit anderen Umgebungen (nicht nur von Apple.)
Ich bin froh zu hören, jemand aus Ihren versuchen, Ihren code wiederverwenden für andere Projekte : ) Zu viele Menschen vergessen, Ihre eigenen Bibliotheken erstellen und in diesen Tagen ich habe nicht die geringste Ahnung, warum.
Ich hoffe, das hilft. Cheers,
Matthäus
InformationsquelleAutor der Antwort TouchGameDev
Hier ist Ihr Nachteil: Sie Verbringen den hundert immer ein Entwickler und starten Sie xcode die IDE Sie arbeiten auf dem Mac - dies wäre der beste Weg für Sie, um zu entscheiden, wie es offensichtlich ist, dass Sie nicht vollständig verstehen, wie diese Plattform funktioniert.
Bitte nicht unhöflich sein, jeder versucht, Ihnen zu helfen. Diese Gemeinschaft basiert auf Respekt. Die Menschen hier eigentlich tun, helfen und kümmern und es gibt nur wenige Orte wie diesen auf dem Netz gelassen.
InformationsquelleAutor der Antwort TouchGameDev
Gehen, für C-oder C++ - ich sehe keinen Grund für die Empfehlung einer über den anderen, ohne zu wissen, mehr über Ihre Ziele.
In Bezug auf die Speichernutzung, C++ und C verlangen, mehr diszipliniert Programmieren. In Bezug auf die Geschwindigkeit, C und C++ wird in praktisch jedem Fall schneller als jede ObjC/ObjC++ - Lösung. Ich mache Häufig mix meine Objective-C-Anwendungen mit C und C++ - code und war immer zufrieden mit den Ergebnissen. Als Jonathan korrekt angegeben, ObjectiveC++ ist vor allem eine Brücke für die Verwendung von C++ - code/Bibliotheken in Ihrem Objective C Anwendung/en.
Können Sie frei verwenden, C++ - Objekten in Objective C++. Sie können jedoch NICHT verwenden, Objective C/C++ - Objekte in C++. Es ist also eine one-way-road. Zur überwindung aller Einschränkungen durch diese Einschränkung, einfach wickeln Sie Ihre C++ - Objekte mit Objective C++ - Klassen, wo nötig.
InformationsquelleAutor der Antwort Till
"Objective-C ist eine strikte Obermenge von C und Objective-C++ ist eine strikte Obermenge von C++." - https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/CppRuntimeEnv/Articles/SymbolVisibility.html
InformationsquelleAutor der Antwort jacai