Da Objective-C eine dynamische Eingabesprache ist, warum brauchen wir noch Typen? Ist der Grund, weil es mit C-Code vermischt?Warum Typen für jede Objektvariable in Objective-C deklarieren?
Antwort
Objective-C wird nicht mit C gemischt, it's a proper superset of C mit einigen dynamic features.
Sie können die Verwendung von statischen Typisierung auf Objective-C-Objektvariable vermeiden und alles als id
deklarieren, aber ich sehe nicht, warum Sie das tun möchten.
Sie würden alle Hilfe verlieren, die Ihnen der Compiler gibt, dank der Typinformationen (bereitgestellt oder abgeleitet).
Um es zu schließen, brauchen Sie keine Typen, Sie wollen Typen.
Genau; Ohne starke Typisierung von Objekten wird aus einem Kompilierzeitfehler ein Laufzeitfehler, oft zur Laufzeit in den Händen Ihrer [potentiellen] Kunden .... Schwach typisierte Sprachen * suck * zum Erstellen komplexer Anwendungen. – bbum
@bbum - Ich würde es nicht ganz so deutlich sagen, aber Sie haben einen Punkt. –
Ich würde Objective-C nicht genau "Superset" von C nennen. Es ist eine Sprache im SmallTalk-Stil, die über eine Art Makroprozessor implementiert wird, der auf C läuft. Dass man C immer noch "erreichen" kann, ist allerdings Zufall eine, die die Entwickler nutzen, um die Notwendigkeit zu vermeiden, die "Gast" -Sprache vollständig zu implementieren. –
Objective-C ist eine ordnungsgemäße Superset von C wie es alles tun kann, dass C tun kann, und mehr. Ursprünglich wurde Objective-C als Erweiterung von C erstellt, die auf jedem C-Compiler kompiliert wurde.
Typen können Ihnen sowohl als Programmierer helfen, als auch bei der Beschreibung der Sprachsemantik helfen. Sie verhindern Fehler und können die Performance Ihrer Anwendung erhöhen, da das Laufzeitsystem nicht so hart arbeiten muss.
Wo statische Informationen Informationen können die Leistung erhöhen in Ziel-C? –
Ein Beispiel wäre in einem iterativen Konstrukt. Das Laufzeitsystem müsste bei jeder Iteration prüfen, ob der aktuell zugeordnete Typ einer Variablen mit booleschen Operatoren verwendet werden kann. –
Ich verstehe nicht wirklich, welches Szenario/welche Sprache du beschreibst, aber für Objective-C ist es sicherlich nicht wahr. Seine späte Bindung bedeutet, dass bei jeder Nachricht, die gesendet wird, die Implementierung der Methode erneut vom Selektor gelöst wird. –
- 1. ObjectiveC: Wo private Instanzeigenschaften deklarieren?
- 2. Für jede Schleife Inkompatible Typen
- 3. Wie deklarieren und verwenden Sie 3-dimensionale Array in ObjectiveC?
- 4. Deklarieren interne Typen in F #
- 5. einen Controller für jede Registerkarte deklarieren
- 6. 2D Dynamische Speicherzuweisung - ObjectiveC
- 7. Deklarieren von Typen für komplexe Datenstrukturen in Python
- 8. Schnittstellen können keine Typen deklarieren
- 9. Deklarieren einer Liste der Typen
- 10. Benutzerdefinierte Typen in Arrays/Sammlungen und für jede Schleife
- 11. AMF0 Parser in ObjectiveC
- 12. Deklarieren von Strukturattributen mit unterschiedlichen Typen
- 13. Warum jQuery zweimal deklarieren?
- 14. Können Sie zwei Variablen unterschiedlicher Typen in einer Anweisung deklarieren?
- 15. Deklarieren Sie Typen ohne implizite Konvertierung in C++
- 16. Warum ein eigenes Modul für Typen haben?
- 17. "Objekt" vs "Objektvariable" in Java?
- 18. ObjectiveC-Blöcke Java-Äquivalent
- 19. Muss ich jede Aktivität in einer Manifestdatei deklarieren?
- 20. Warum deklarieren Unicode durch Zeichenfolge in Python?
- 21. Instinktive Objektvariable Sichtbarkeit
- 22. Vorlagenspezialisierung für private Typen
- 23. JAXB als Abhängigkeit deklarieren. Warum?
- 24. Was bewirkt 'deklarieren' in 'deklarieren von Klassenaktionen deklarieren'?
- 25. warum nicht alle Variablen als Static deklarieren
- 26. Warum deklarieren Sie immer Funktionen in JavaScript?
- 27. Warum sind die Eigenschaften anonymer Typen in C# schreibgeschützt?
- 28. Für jede Schleife in PHP
- 29. Präsentieren Sie kleine ModalViewController ObjectiveC
- 30. Java: Warum kann ich Integer-Typen nicht mit wissenschaftlicher Notation deklarieren?
Siehe http://stackoverflow.com/questions/5555855/dynamic-typing-object-c-how-does-itwork – onnoweb
Es ist nicht nur mit C-Code gemischt, es ist eine strenge Obermenge von C. – geoffspear
Sie können , in der Theorie, Code alles als "ID", aber Sie würden sich sehr schnell verwirrt. (Es ist wahr, dass Objective-C ist eine seltsame Mischung aus starker Eingabe und Ente Typisierung. Es ist eine seltsame Bestie.) –