Objective‑C
Die Programmiersprache Objective‑C (ObjC) kombiniert die Leistungsfähigkeit von C mit den objektorientierten Fähigkeiten von Smalltalk und bietet so eine flexible und dynamische Programmierumgebung. Besonders bemerkenswert ist die Fähigkeit, Nachrichten an Objekte zu senden, die möglicherweise nicht darauf reagieren können, was durch das Konzept des Message Forwarding gelöst wird.
Ein weiterer interessanter Aspekt von Objective‑C ist die dynamische Typisierung. Dies ermöglicht es Entwicklern, flexiblen und erweiterbaren Code zu schreiben, indem sie Nachrichten an Objekte senden können, deren Schnittstellen diese Nachrichten nicht explizit definieren. Dadurch lassen sich Designmuster wie das Beobachter- oder Proxy-Muster effizient umsetzen.
Was ist Objective‑C (ObjC)?
Objective‑C (ObjC) ist eine objektorientierte Programmiersprache, die von Brad Cox und Tom Love entwickelt wurde. Sie kombiniert die Syntax und primitiven Datentypen der Programmiersprache C mit den Konzepten der objektorientierten Programmierung von Smalltalk.
Wann wurde Objective‑C veröffentlicht?
Objective‑C wurde erstmals 1984 veröffentlicht. Die Programmiersprache entstand aus dem Bedürfnis heraus, die Möglichkeiten von C um objektorientierte Funktionen zu erweitern. Brad Cox und Tom Love entwickelten diese Erweiterung, um die Wiederverwendbarkeit von Softwarekomponenten zu verbessern.
Wird Objective‑C weiterentwickelt?
Obwohl Swift seit 2014 die bevorzugte Programmiersprache für Apple-Entwickler ist, wird Objective‑C weiterhin in vielen bestehenden Anwendungen und Frameworks verwendet. Viele große Unternehmen nutzen noch immer Code in Objective‑C, der nicht neu geschrieben wird. Apple unterstützt und fördert Objective‑C nach wie vor, was zeigt, dass es weiterhin relevant bleibt.
Apple fördert weiterhin die Verwendung von Objective‑C durch regelmäßige Updates im Rahmen seiner Entwicklungsumgebungen wie Xcode.
Warum Objective‑C von Apple?
Apple verwendet Objective‑C, weil es die de facto-Sprache für die Entwicklung von Mac OS X war. Als Steve Jobs Apple verließ, um NeXT zu gründen, entwickelte er Objective‑C als eine Sprache, die C++ vermied und viele seiner Schwächen beseitigte. Diese Sprache wurde dann für die Entwicklung von NeXTSTEP verwendet, das später zu Mac OS X wurde. Als Apple NeXT übernahm, wurde Objective‑C auch für die Entwicklung von iOS und anderen Apple-Produkten verwendet.
Objective‑C ist eine strikte Obermenge von C und bietet viele Vorteile gegenüber C++. Es ermöglicht objektorientierte Programmierung und behält gleichzeitig die Leistung und Flexibilität von C bei. Dies macht es besonders geeignet für die Entwicklung komplexer Softwarelösungen wie Betriebssysteme und Anwendungen.
- Objektorientierte Programmierung: Erlaubt effiziente Implementierung von Designmustern.
- Dynamische Typisierung: Ermöglicht flexiblen Code.
- Kompatibilität mit C: Nutzt bestehende C‑Bibliotheken nahtlos.
- Leistung: Beibehaltung der Geschwindigkeit und Effizienz von C.
Welche Eigenschaften hat die Objective‑C Programmiersprache?
Objective‑C zeichnet sich durch mehrere markante Eigenschaften aus, die es zu einer einzigartigen und leistungsfähigen Programmiersprache machen.
Objektorientiert
Objective‑C ist eine objektorientierte Sprache. Sie verwendet Klassen und Objekte, um Strukturen und Verhaltensweisen zu modellieren. Dies ermöglicht Entwicklern, komplexe Softwarelösungen effizient zu erstellen.
Erweiterung von C
Objective‑C erweitert die C‑Programmiersprache um objektorientierte Elemente. Die Syntax bleibt größtenteils gleich, wodurch Entwickler mit C‑Kenntnissen schnell in Objective‑C einsteigen können.
Smalltalk-ähnliche Nachrichten
Objective‑C nutzt eine Smalltalk-ähnliche Syntax für das Versenden von Nachrichten. Diese Syntax ermöglicht es, Methodenaufrufe flexibel und dynamisch zu gestalten.
Garbage Collection
Ab Version 2.0 unterstützt Objective‑C eine optionale Garbage Collection. Dies erleichtert das Speicher-Management und reduziert Speicherlecks in Anwendungen.
Unterstützung von Blocks
Objective‑C unterstützt Blocks, eine Art Closures. Blocks ermöglichen es, Codeblöcke als Variablen zu behandeln und sie an Funktionen zu übergeben oder zurückzugeben.
Kategorien zur Erweiterung von Klassen
Mit Kategorien können Entwickler den Methodensatz einer Klasse nachträglich erweitern, ohne deren ursprünglichen Implementierungscode ändern zu müssen. Dies fördert die Wiederverwendbarkeit und Flexibilität des Codes.
Dynamische Typisierung
Objective‑C verwendet dynamische Typisierung. Dadurch können Nachrichten an Objekte gesendet werden, deren Schnittstellen diese Nachrichten nicht explizit definieren. Dies ermöglicht flexiblen und erweiterbaren Code.
Wie unterscheiden sich Swift und Objective‑C?
Swift wurde entwickelt, um einige der Einschränkungen von Objective‑C zu überwinden und bietet daher verschiedene Vorteile:
- Syntax: Swift hat eine modernere Syntax im Vergleich zur klassischen Syntax von Objective‑C.
- Sicherheit: Swift bietet mehr Sicherheitsfunktionen wie Optionals, die null-sichere Programmierung fördern.
- Leistung: Swift kann oft schneller als Objective‑C sein aufgrund verschiedener Optimierungen.
- Speicherverwaltung: Swift verwendet Automatic Reference Counting (ARC) für alle Speicheroperationen; Objective-Cs ARC ist optional.
- Einfachheit: Swift vereinfacht viele Konzepte der Programmierung im Vergleich zu den komplexeren Strukturen in Objective‑C.
Trotz dieser Unterschiede bleibt Objective‑C relevant für bestehende Anwendungen und Frameworks innerhalb des Apple-Ökosystems.
Lassen sich mit Objective‑C Cross-Plattform-Apps entwickeln?
Objective‑C ist hauptsächlich für die Entwicklung von Anwendungen auf Apple-Plattformen wie macOS und iOS konzipiert. Dennoch gibt es Techniken, um plattformübergreifende Apps zu erstellen.
Entwickler können die folgenden Techniken anwenden, um die Plattformunabhängigkeit zu erhöhen:
- Modulare Architektur: Die plattformspezifischen Teile der Anwendung lassen sich in separate Module auslagern. Gemeinsame Funktionen können in C++- oder C‑Bibliotheken implementiert werden.
- Frameworks nutzen: Frameworks wie Qt ermöglichen das Entwickeln von Anwendungen für verschiedene Plattformen durch eine einheitliche API.
Vorteile von Kategorien und Erweiterungsmethoden
Objective‑C erlaubt das Hinzufügen von Methoden zu einer Klasse mittels Kategorien, ohne den Implementierungscode zu besitzen. Dies erhöht die Flexibilität im Entwicklungsprozess. In C existieren ähnliche Konzepte als Erweiterungsmethoden, welche statische Methoden hinzufügen.
Forwarding Mechanismus
Der Forwarding Mechanismus in Objective‑C ermöglicht es Objekten, Nachrichten weiterzuleiten, falls sie nicht direkt darauf reagieren können. Entwickler überschreiben dazu die forwardInvocation:
Methode der NSObject
Klasse.
Welche Apps wurden mit Objective‑C entwickelt?
Zahlreiche bekannte Anwendungen wurden mit Objective‑C entwickelt, darunter viele der Standard-Apps auf iPhones und Macs. Beispiele sind der Safari-Browser, die Mail-App und der Kalender. Auch Drittanbieter-Apps wie Instagram und Uber begannen ihre Entwicklung in Objective‑C, bevor sie teilweise oder vollständig auf Swift umstiegen.